Samlinger er veldig nyttige når du implementerer fleksibel og generisk datalagring. De fleste samlinger kan krympe eller vokse i programmet.
La oss utforske forskjellige datastrukturer på rustprogrammeringsspråket og hvordan vi utfører de grunnleggende operasjonene.
Her har vi de fire hovedkategoriene for Rust -samlingene:
La oss diskutere hver kategori i detalj.
Sekvenssamlinger
Her vil vi diskutere de tre typene sekvenssamlinger i rust:
Vec
En VEC eller vektor er en sammenhengende dyrkbar matrise som lagrer verdier i en liste, etter hverandre i minnet.
For å lage en ny tom vektor, bruk den nye metoden som vist nedenfor:
La mut vec = vec :: new ();
Deretter kan du legge til elementer i vektoren ved hjelp av push -metoden:
Vec.Push (1);
Vec.Push (2);
For å skrive ut en vektor, bruk feilsøkingstrekk som angitt nedenfor:
Println!(":? ", vec);
Fjern elementet i en vektor ved hjelp av fjerningsmetoden og indeksen for elementet som skal fjernes, som vist nedenfor:
Vec.fjerne (0); // Fjern elementet ved indeks 0
Println!(":? ", vec);
Vecdeque
En vecdeque eller dobbel endet vektor er en ikke-sammenhengende dyrkbar ringbuffer. Vi kan lage en ny tom buffer ved hjelp av den nye metoden som angitt nedenfor:
Bruk std :: samlinger :: Vecdeque;
La Mut Deque = Vecdeque :: new ();
Vecdeque bruker Push_front () og push_back () -metoder for å legge elementer foran eller bak på deque:
Deque.push_front (1);
Deque.push_front (2);
Deque.push_front (3);
// skyve tilbake
Deque.push_back (4);
Deque.push_back (5);
For å skrive ut elementene i Vecdeque, bruk feilsøkingstrekket:
Println!(":? ", deque);
For å fjerne elementer fra en VECDEQUE, bruk POP_FRONT () og POP_BACK () -metodene for å fjerne et element fra henholdsvis fronten og baksiden av deque.
Følgende eksempel er gitt nedenfor:
Deque.pop_back ();
Deque.pop_front ();
Println!(":? ", deque);
Dette skal returnere som vist nedenfor:
[3, 2, 1, 4, 5]
[2, 1, 4]
LinkedList
Dette er en dobbelt koblet liste med eide noder. Det er nyttig når du trenger en vektor eller deque av ukjent størrelse.
For å lage en ny tom LinkedList, bruk følgende:
Bruk std :: samlinger :: LinkedList;
La mut lnk = linkedList :: new ();
Vi bruker Push_front () og push_back () -metodene for å legge til elementer foran og baksiden av en lenket liste, henholdsvis.
For eksempel:
La mut lnk = linkedList :: new ();
LNK.push_front (3);
LNK.push_front (2);
LNK.push_front (1);
LNK.push_back (4);
LNK.push_back (5);
Println!(":? ", lnk);
Det forrige eksemplet skal komme tilbake som følger:
[1, 2, 3, 4, 5]
For å fjerne elementer fra en koblet liste, bruk POP_FRONT- og POP_BACK -metodene:
LNK.pop_back ();
LNK.pop_front ();
Println!(":? ", lnk);
Utgangen er som vist:
[1, 2, 3, 4, 5] // Før
[2, 3, 4] // etter
Kartsamlinger
Den andre kategorien av rustamlinger i kart, og disse inkluderer:
Hashmap
Et hashmap lar deg lagre kartlegging av nøkkelverdipar. Den bruker en hashingfunksjon for å bestemme hvordan nøklene og verdiene lagres i minnet. De er veldig nyttige når du trenger å lagre relaterte verdier. Den bruker en nøkkel i stedet for en indeks for å hente verdier.
For å lage et nytt hashmap, bruk følgende syntaks:
Bruk std :: Collections :: Hashmap;
La Mut Map = HashMap :: new ();
For å sette inn nøkkelverdipar til et hashmap, bruk følgende innsatsmetode:
kart.Sett inn (0, "Angular");
kart.Sett inn (1, "React");
kart.Sett inn (3, "Mithril");
kart.sett inn (4, "vue");
For å skrive ut et hashmap, bruk følgende:
Println!(":? ", kart);
Dette skal returnere som vist nedenfor:
1: "React", 2: "Svelte", 3: "Mithril", 4: "Vue", 0: "Angular"
Husk at nøkkelen og verdien kan være en hvilken som helst støttet type.
For å slette elementer fra et hashmap, bruk fjerning () -metoden som følger:
kart.fjerne (1);
Btreemap
Du merker at et hashmap ikke er sortert. Hvis du er ute etter et sortert kart, bruk BTREEMAP. Hvert element i Btreemap lagres i sin egen heapallokerte node.
For å lage en ny BTREEMAP, bruk følgende:
Bruk std :: Collections :: Btreemap;
La mut Btree = Btreemap :: new ();
For å legge til elementer, bruk følgende innsatsmetode.
Btree.Sett inn ("nøkkel", "verdi");
For å slette et element, bruk fjerningsmetoden som:
Btree.fjerne ("nøkkel");
Sett samlinger
Neste kategori av rustamlinger er sett. Disse typene er avledet fra settteorien, og de inkluderer:
Hashset
Et hashset er nært likt en hashmap. Dette betyr at det er en fast form for et hashmap og ikke tillater dupliserte verdier.
For å lage et nytt hashset, bruk følgende syntaks:
Bruk std :: samlinger :: hashset;
La Mut Set = HashSet :: new ();
Bruk innsatsen og fjern metoder for å legge til og slette elementer fra henholdsvis en hashmap.
sett.Sett inn ("A");
sett.Fjern ("A");
Btreeset
Dette er en fast implementering av et Btreemap. Vi kan lage et nytt BTreeset som vist nedenfor:
Bruk std :: Collections :: Btreeset;
La Mut Set = BTreeset :: Ny ();
Sett inn og fjern elementer som angitt nedenfor:
sett.Sett inn ("A");
sett.Fjern ("A");
Diverse samlinger
Det er bare en type i MISC -samlingene.
Binaryheap
Binær haug lar deg implementere et stort binært tre. Du kan opprette en ny binær haug som angitt nedenfor:
Bruk std :: Collections :: Binaryheap;
La Mut Heap = Binaryheap :: New ();
For å legge til elementer, bruk følgende push -metode:
haug.push ("element");
For å fjerne en verdi, bruk følgende popmetode:
haug.pop ();
Popmetoden fjerner den største varen i en haug.
Konklusjon
Denne guiden dekker de populære og nyttige datastrukturene og deres grunnleggende operasjoner på rustprogrammeringsspråket. I tillegg diskuterte vi i detalj de fire hovedkategoriene i Rust -samlingene, for eksempel sekvenser, kart, sett og MISC. Vi håper du fant denne artikkelen nyttig. Sjekk de andre Linux -hint -artiklene for flere tips og informasjon.