Standardne C ++ knjižnice
Standardna knjižnica predložaka (STL),
sadržaj
C + + prelazi na novu razinu
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
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
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
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.
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.
- Knjižnice Krasnodara: popis, opis, adrese
- Pojedinosti o tome što se nalazi na FTP poslužiteljima
- Svojstva i metode snimanja algoritama
- Knjižnica nazvana Lermontovom. Penza se posebno ponosi novom zgradom
- Gorky Library (Tver): Povijest i suvremenost
- Osnovne vrste i primjeri cikličkih algoritama
- Java polja žica. Razvrstavanje polja u Java. Dvodimenzionalni Java raspored
- Što je Ruby? Programski jezik "Ruby"
- Nikitinsky Library of Voronezh: povijest stvaranja i života institucije danas
- Knjižnice u Moskvi: novi izgled uobičajenih objekata
- Metode opisivanja algoritama i vrsta algoritama
- Chelyabinsk Regionalna Univerzalna Znanstvena Knjižnica: Dan Jučera i Danas
- Knjižnice Surgut: neovisno obrazovanje za sve
- Vrste algoritama u računalnoj znanosti: primjeri
- Msvcr71 dll: što je ova knjižnica i kako ispraviti pogrešku povezanu s njegovom odsutnošću?
- Definicija, svojstva i vrste algoritama
- Rješavanje problema programiranja. Ciklički algoritam
- Spoji vrsta: opis operacije algoritma i razlike u odnosu na druge vrste naručivanja podataka
- Kako pravilno ukloniti DirectX na sustavu Windows 7
- Popis svih Uključi C objašnjenja na C
- Razvrstavanje algoritama kakvi jesu