STL u jeziku c ++: Sve što trebate znati

Ovaj će vam članak pružiti detaljno i sveobuhvatno znanje o STL-u na jeziku C ++, a također će vam dati ideju o različitim spremnicima.

Standardna biblioteka predložaka (STL) skup je klasa predložaka C ++ koji pružaju uobičajene programske strukture podataka i funkcije kao što su popisi, stogovi, nizovi itd. U ovom članku o STL-u u C ++-u razgovarat ćemo o sljedećim uputama:

Nastavljamo s ovim člankom o STL-u na C ++





C ++ predlošci

C ++ nam pruža značajku predložaka koja omogućava funkcijama i klasama da rade s generičkim tipovima. To omogućuje ponovnu upotrebu funkcije ili klase i omogućuje joj rad na mnogo različitih vrsta podataka, a da se ne prepiše za svaku.

Nastavljamo s ovim člankom o STL-u na C ++



Generičke funkcije i STL

Tijekom programiranja često postoji potreba za stvaranjem funkcija koje izvode iste operacije, ali rade s različitim vrstama podataka. Dakle, za prevladavanje ovog problema C ++ nudi značajku za stvaranje jedne generičke funkcije umjesto mnogih funkcija koje mogu raditi s različitim vrstama podataka pomoću parametra predloška. Zbirka ovih generičkih klasa i funkcija naziva se Standard Template Library (STL)

Komponente STL-a koje su sada dio standardne knjižnice C ++ definirane su u prostoru imena std. Stoga moramo koristiti direktivu using namespace da bismo ih uvezli u naš program.

Sintaksa:



Korištenje prostora imena std

STL ima tri komponente

  • Spremnici

  • Algoritmi

  • Iteratore

Ove tri komponente međusobno djeluju u sinergiji kako bi pružile podršku raznim programskim rješenjima. Algoritam koristi iteratore za izvođenje operacije pohranjene u spremnicima.

Spremnik je objekt koji organizirano pohranjuje podatke u memoriju. Spremnici u STL-u implementirani su pomoću klasa predložaka i stoga se lako mogu prilagoditi i prilagoditi kako bi sadržavali različite vrste podataka.

Postupak koji se koristi za obradu podataka sadržanih u spremnicima definiran je kao algoritam. STL uključuje mnogo različitih vrsta algoritama koji pružaju podršku zadacima poput inicijalizacije, pretraživanja, kopiranja, sortiranja i spajanja, kopiranja, sortiranja i spajanja. Algoritmi se provode pomoću funkcija predloška.

Iterator se može definirati kao objekt koji upućuje na element u spremniku. Iteratori se mogu koristiti za kretanje kroz sadržaj spremnika. Iteratorima se rukuje baš poput pokazivača. Možemo ih povećavati ili smanjivati. Iteratori povezuju algoritam sa spremnicima i igraju ključnu ulogu u manipulaciji podacima pohranjenim u spremnicima.

Container-STL-in-C++

Nastavljamo s ovim člankom o STL-u na C ++

Spremnici

STL definira deset spremnika koji su grupirani u tri kategorije.

Spremnici

Opis

Datoteka zaglavlja

Iterator

Vektor

Može se definirati kao dinamički niz. Omogućuje izravan pristup bilo kojem elementu.

Nasumični pristup

Popis

To je dvosmjerni linearni popis. Omogućuje umetanje i brisanje bilo gdje

qtp vs selen što je bolje

Dvosmjerno

i

Dvostruki je red. Omogućuje umetanje i brisanje na oba kraja. Omogućuje izravan pristup bilo kojem elementu.

Nasumični pristup

postavljen

To je pridruženi spremnik za pohranu jedinstvenih kompleta. Omogućuje brzo traženje.

Dvosmjerno

multiset

To je pridruženi spremnik za pohranu nejedinstvenih skupova.

Dvosmjerno

karta

To je pridruženi spremnik za pohranu jedinstvenih parova ključ / vrijednost. Svaki je ključ povezan samo s jednom vrijednošću.

Dvosmjerno

multimap

To je pridruženi spremnik za spremanje ključa / vrijednosti u kojem jedan ključ može biti povezan s više od jedne vrijednosti (mapiranje jedan-prema-više). Omogućuje pretraživanje na temelju ključa.

Dvosmjerno

stog

Standardni niz slijedi zadnji-prvi-izašao (LIFO)

Nema iteratora

red

Standardni red slijedi prvi-prvi-izašao (FIFO)

Nema iteratora

prioritet-red

Prvi je element uvijek element s najvećim prioritetom

Nema iteratora

Spremnici za slijed

Spremnici za slijed pohranjuju elemente u linearnom redoslijedu. Svi su elementi međusobno povezani svojim položajem duž crte. Omogućuju umetanje elementa i svi podržavaju nekoliko operacija na njima.

STL nudi tri vrste elemenata niza:

  • Vektor
  • Popis
  • i

Asocijativni spremnici:

Dizajnirani su na takav način da mogu podržati izravan pristup elementima pomoću tipki. Nisu sekvencijalni. Postoje četiri vrste

asocijativni spremnici:

  1. Postavi
  2. Multiset
  3. Karta
  4. Multimap

Svi gore navedeni spremnici pohranjuju podatke u strukturu koja se naziva stablo i koja olakšava brzo

pretraživanje, brisanje i umetanje za razliku od sekvencijalnog. Skup kontejnera ili multiset mogu pohraniti razne stavke i pružiti operacije za manipulaciju njima koristeći vrijednosti kao ključeve.

A karta ili Multimap koriste se za spremanje predmeta u paru, jedan se zove ključ, a drugi

naziva vrijednost.

Izvedeni spremnici:

STL nudi tri izvedena spremnika, naime, stack, queue i prior_queue. Oni su također poznati i kao adapteri za spremnike.

Postoje tri vrste izvedenih spremnika:

što je postupak u sql-u

1. Slagati

2. Red

3.Rad_prioritet

Snopovi, red i prioritetni red mogu se lako stvoriti iz različitih spremnika slijeda. Izvedeni spremnici ne podržavaju iteratore i stoga ih ne možemo koristiti za manipulaciju podacima. Međutim, podržavaju funkciju dva člana pop () i push () za provođenje operacija brisanja i umetanja.

Nastavljamo s ovim člankom o STL-u na C ++

Algoritmi

Algoritmi su funkcije koje se općenito mogu koristiti u različitim spremnicima za obradu njihovog sadržaja. Iako svaki spremnik pruža funkcije za svoje osnovne operacije, STL nudi više od šezdeset standardnih algoritama za podršku proširenijim ili složenijim operacijama. Standardni algoritmi također nam omogućuju istodobni rad s dvije različite vrste spremnika.

STL algoritmi jačaju filozofiju ponovne upotrebe. Korištenjem ovih algoritama programeri mogu uštedjeti puno vremena i truda. Da bismo imali pristup STL algoritmima, moramo uključiti u naš program.

STL algoritam, na temelju prirode operacija koje izvode, može se kategorizirati pod:

  • Nemutirajući algoritmi

  • Mutirajući algoritmi

  • Algoritmi sortiranja

  • Postavite algoritme

  • Relacijski algoritam

Nastavljamo s ovim člankom o STL-u na C ++

Ponavljači:

Iteratori se ponašaju poput pokazivača i koriste se za pristup elementima spremnika. Pomoću iteratora krećemo se kroz sadržaj spremnika. Iteratorima se rukuje baš poput pokazivača. Možemo ih povećavati ili smanjivati ​​prema našim zahtjevima. Iteratori povezuju spremnike s algoritmima i igraju vitalnu ulogu u manipulaciji podacima pohranjenim u spremnicima. Često se koriste za prolazak iz jednog elementa u drugi, taj se postupak naziva iteracijom kroz spremnik.

Postoji pet vrsta iteratora:

1.Ulaz

2.izlaz

3.Naprijed

4.Dvosmjerna

5.Slučajno

Iterator

Način pristupa

Smjer kretanja

I / O sposobnost

Napomena

Ulazni

Linearno

Samo naprijed

Samo za čitanje

Nije moguće spremiti

Izlaz

Linearno

Samo naprijed

Samo piši

Nije moguće spremiti

Naprijed

Linearno

Samo naprijed

Čitaj / piši

Može se spasiti

Dvosmjerno

Linearno

Naprijed i natrag

Čitaj / piši

Može se spasiti

Slučajno

Slučajno

Naprijed i natrag

Čitaj / piši

Može se spasiti

java kako to koristiti

Različite vrste iteratora moraju se koristiti s različitim vrstama spremnika, tako da samo

kontejneri za redoslijed i asocijacije smiju putovati kroz iteratore. Svaka vrsta iteratora koristi se za obavljanje određenih funkcija. Ulazni i izlazni iteratori podržavaju najmanje funkcija. Mogu se koristiti samo za prolazak kroz kontejner. Naprijed iteratori podržavaju sve operacije ulaznih i izlaznih iteratora i također zadržavaju svoj položaj u spremniku. Dvosmjerni iterator, iako podržava sve operacije iteratora prema naprijed, pruža mogućnost kretanja u smjeru unatrag u spremniku.

Tako smo došli do kraja ovog članka o 'STL u C ++'. Ako želite saznati više, pogledajte Edureka, pouzdane tvrtke za internetsko učenje. Edurekin tečaj za obuku i certificiranje Java J2EE i SOA osmišljen je kako bi vas osposobio za osnovne i napredne Java koncepte, zajedno s raznim Java okvirima poput Hibernate & Spring.

Imate pitanje za nas? Molimo vas da ga spominjete u odjeljku za komentare ovog bloga i javit ćemo vam se što je prije moguće.