Standardne C ++ knjižnice

Standardna knjižnica predložaka (STL),

ili standardna biblioteka predložaka, utjecala je na arhitekturu C + + i postala jezgra jezika. STL je skup univerzalnih komponenti i suvremenih algoritama visokih performansi za upravljanje podacima. Zahvaljujući ovom C ++ biblioteke programer postala dostupna najnovija dostignuća u području podatkovnih struktura i učinkovitih algoritama bez potrebe za detaljnom razumijevanju njihove strukture i djelovanja.

C + + prelazi na novu razinu

C + + nova razina

Za programera, STL predstavlja skup skupova prikupljanja namijenjenih za određene svrhe i skup algoritama koji mogu raditi s njima. Zbog činjenice da su sve komponente knjižnice predlošci, oni se mogu koristiti za bilo koju vrstu elementa. Osim toga, knjižnica vam omogućuje izgradnju vlastitih klasa i algoritama koji mogu raditi zajedno s postojećim.

Ovaj pristup organizaciji rada s podacima i algoritmima dovodi C + + kvalitativno na drugu razinu apstrakcije. Sada programer nije opterećen stvaranjem dinamičkih polja, popisa, stabala, haseva. Također, može zaboraviti na programiranje različitih algoritama pretraživanja i traga. S pojavom STL dovoljno je za programera odrediti odgovarajući spremnik i koristiti njegove funkcije članova i algoritme za obradu.

STL komponente mogu raditi s proizvoljnim vrstama podataka. To se postiže činjenicom da su sve komponente C + + knjižnice predlošci koji omogućuju korištenje bilo koje vrste ako su u stanju obaviti potrebne operacije. To jest, spremnici i algoritmi su generalizirani s obzirom na vrste. Taj se koncept naziva opće programiranje.

Unatoč promjenama koje su uvedene u C ++ s dolaskom STL, ne treba zaboraviti da je jezik učinkovit i svestran alat programa i prije nego svojim izgledom, a sve njegove mogućnosti C ++ sačuvana (na primjer, knjižnični sustav ili ctime), te s dolaskom STL samo pomnožen sam.

Komponente knjižnice

Građevni blokovi knjižnice su pažljivo strukturirane komponente i njihova debugirana interakcija. Glavni takvi blokovi su spremnici, iteri i algoritmi. C ++ STL knjižnica pruža nevjerojatnu razinu fleksibilnosti u programiranju, ali to je teško shvatiti i zahtjevan za vrijeme razvoja.

spremnici

STL vrste kontejnera

U standardnoj C ++ knjižnici, spremnici se koriste za upravljanje zbirkama i sastoje se od objekata određene vrste. Svi spremnici imaju niz pro i kontra. Stoga su razvijeni različiti spremnici, prikladni za različite zahtjeve programa. Spremnici mogu biti nizovi ili povezani popisi. Također se mogu implementirati s posebnim ključem za svaki element.



Postoje 3 vrste kontejnera:

  • Konzervirane kontejnere. Organizirane su zbirke. Svaki element ima svoj položaj, koji ovisi o vremenu umetanja i ne ovisi o vrijednosti elementa. Postoji pet vrsta kontejnerskih kontejnera: niz, vektor, deka, popis, popis prema naprijed.
  • Asocijativni spremnici. Također su naručene zbirke elemenata, ali njihov položaj ovisi o vrijednosti samog elementa ili ključu, ako su elementi zbirke parovi ključ / vrijednost. Postoje 4 standardna asocijativna spremnika: set, multiset, map, multimap.
  • Neuredni asocijativni spremnici. U ovom slučaju, vrijednost elemenata zbirke ne utječe na vrijednost ili vrijeme umetanja elementa u zbirku. Ako umetnete u zbirku n-tog broja elemenata, njihova će narudžba biti nepredvidljiva. Štoviše, s vremenom se može promijeniti. Neuredni spremnici su: neuredan skup, neuredan multiset, neuredna karta, neorganizirani multimap.

iterators

C + + Iteratori

To su mehanizmi koji se koriste za pomicanje elemenata u zbirci objekata. U ovom slučaju zbirke mogu biti spremnici ili njihovi podskupovi. Glavna prednost iteracija je stvaranje minimalnog, dovoljnog i univerzalnog sučelja za bilo koju vrstu kontejnera. Na primjer, jedan od ciljeva je da se presele Iterator na elementima prikupljanje i to ne ovisi o strukturi zbirke, koja može biti bilo što: polje, drvo, hash tablicu. Pretraživanje elemenata radi isto.

Sučelje samih iteracija sličan je radu s pokazivačima. Na primjer, za dobivanje iterator sljedeće stavke koje je potrebno obaviti operaciju „++”, i da se vrijednost elementa na kojima iteratora trenutno pokazuje, - Operacija „*”. Tako je iterator sličan nekoj vrsti pametnog pokazivača.

algoritmi

Shema algoritma

Glavni zadatak algoritama je obrada elemenata zbirki. Na primjer, pretražujte, poredajte, izmijenite ili upotrijebite vrijednost elementa. Algoritmi se provode na štetu iteracija. Ovaj vam pristup omogućuje da stvorite algoritam samo jednom i proširite svoj rad na bilo koji spremnik putem jednog sučelja iteracija.

Za izuzetno složene probleme, razvijen je mehanizam za pomoćne funkcije, koji se nazivaju algoritmima. To osigurava potrebnu fleksibilnost za rukovanje pojedinim slučajevima. Na primjer, programer može odrediti poseban kriterij pretraživanja. S pojavom lambda funkcija, postoje mogućnosti opisati sve operacije izvedene na elementima kontejnera kada su prešli. Dakle, C ++ funkcija knjižnica predstavlja vrlo fleksibilne značajke.

Je li STL u sukobu s konceptima OOP?

U C + + knjižnici, STL podatke upravljaju klase kontejnera, a operacije se kontroliraju pomoću prilagođenih algoritama. Ispada da koncept STL knjižnice odvaja podatke i operacije, što je u suprotnosti s načelima objektno orijentirano programiranje, koje zahtijevaju kombiniranje podataka i operacija. Međutim, postoji izgovor za to. Zahvaljujući interakciji bilo kojeg algoritma s bilo kojim spremnicima putem iteracija, programer može kombinirati sve podatke s bilo kojim postupkom. Dakle, proturječnost s OOP se eliminira i postiže se sasvim nova razina fleksibilnosti.

Interakcija STL komponenata

zaključak

STL predstavlja novi ili poboljšani pristup programiranju. Počeci knjižnice pojavili su se davno. Prve su ideje rođene 1992.-1994. Nakon dugogodišnjeg razvoja, STL je u potpunosti integriran u C ++ 11 standard. Knjižnica ima veliku funkcionalnost i izvrsnu fleksibilnost, ali je teško razumjeti. Dokumentacija se sastoji od stotina web stranica (na primjer, dokumentacija na Microsoft Visual C ++ web mjestu), a opis zauzima 1000 stranica knjiga. Istodobno je knjižnica u aktivnom razvoju.

Dijelite na društvenim mrežama:

Povezan
Pojedinosti o tome što se nalazi na FTP poslužiteljimaPojedinosti o tome što se nalazi na FTP poslužiteljima
Svojstva i metode snimanja algoritamaSvojstva i metode snimanja algoritama
Knjižnica nazvana Lermontovom. Penza se posebno ponosi novom zgradomKnjižnica nazvana Lermontovom. Penza se posebno ponosi novom zgradom
Gorky Library (Tver): Povijest i suvremenostGorky Library (Tver): Povijest i suvremenost
Osnovne vrste i primjeri cikličkih algoritamaOsnovne vrste i primjeri cikličkih algoritama
Java polja žica. Razvrstavanje polja u Java. Dvodimenzionalni Java rasporedJava polja žica. Razvrstavanje polja u Java. Dvodimenzionalni Java raspored
Što je Ruby? Programski jezik "Ruby"Što je Ruby? Programski jezik "Ruby"
Nikitinsky Library of Voronezh: povijest stvaranja i života institucije danasNikitinsky Library of Voronezh: povijest stvaranja i života institucije danas
Knjižnice u Moskvi: novi izgled uobičajenih objekataKnjižnice u Moskvi: novi izgled uobičajenih objekata
Metode opisivanja algoritama i vrsta algoritamaMetode opisivanja algoritama i vrsta algoritama
» » Standardne C ++ knjižnice
LiveInternet