Hvordan bruke datastrukturer i rust

Hvordan bruke datastrukturer i rust
Rust bruker samlingsbiblioteket for å støtte og implementere flere vanlige datastrukturer. En samling refererer til en samling av en eller flere verdier som er lagret i heapminnet. Dette betyr at samlingsstørrelsen ikke trenger å være kjent før sammenstilling.

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:

  1. Sekvenser
  2. Kart
  3. Settene
  4. Misc

La oss diskutere hver kategori i detalj.

Sekvenssamlinger

Her vil vi diskutere de tre typene sekvenssamlinger i rust:

  1. Vec
  2. Vecdeque
  3. LinkedList

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:

  1. Hashmap
  2. Btreemap

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:

  1. Hashset
  2. Btreeset

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.

  1. Binaryheap

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.