OqPoWah.com

Standardne C ++ knjižnice

Standardna knjižnica predlog (STL),

ali standardna knjižnica predlog, vplivala na arhitekturo C + + in postala jedro jezika. STL je niz univerzalnih komponent in sodobnih visoko zmogljivih algoritmov za upravljanje podatkov. Zahvaljujoč tej knjižnici C ++ je programer pridobil napredne dosežke na področju podatkovnih struktur in učinkovitih algoritmov brez potrebe po natančnem razumevanju njihove strukture in dela.

C + + gre na novo raven

C + + nova stopnja

Za programerja je STL predstavljen nabor zbirnih razredov, namenjenih za posebne namene, in nabor algoritmov, ki lahko delajo z njimi. Ker so vse komponente knjižnice predloge, jih je mogoče uporabiti za vse vrste elementov. Poleg tega knjižnica omogoča gradnjo lastnih razredov in algoritmov, ki lahko delujejo skupaj z obstoječimi.

Ta pristop k organizaciji dela s podatki in algoritmi C ++ kvalitativno preide na drugo stopnjo abstrakcije. Zdaj programer ni obremenjen z ustvarjanjem dinamičnih nizov, seznamov, dreves, heš. Prav tako lahko pozabi na programiranje različnih algoritmov iskanja in prehoda. S prihodom STL-ja je dovolj, da programer določi ustrezen vsebnik in uporablja svoje funkcije člana in algoritme za obdelavo.

Komponente STL lahko delajo z poljubnimi vrstami podatkov. To se doseže z dejstvom, da so vse komponente knjižnice C ++ predloge, ki omogočajo uporabo vseh vrst, če lahko izvajajo potrebne operacije. To pomeni, da so kontejnerji in algoritmi posplošeni glede na tipe. Ta koncept se imenuje generalizirano programiranje.

Kljub spremembam, ki so bile uvedene v C ++ s prihodom STL, ne smemo pozabiti, da je jezik učinkovit in vsestranski program, orodje in pred svoj videz, in vseh njegovih funkcij C ++ konzervirane (na primer knjižnica sistem ali čas zadnje), in s prihodom STL le pomnožili.

Komponente knjižnice

Gradniki v knjižnici so skrbno strukturirane komponente in njihova odpravljena interakcija. Glavni takšni bloki so kontejnerji, iteratorji in algoritmi. S knjižnico C ++ STL nudi neverjetno raven fleksibilnosti pri programiranju, vendar je v času obvladovanja težko razumeti in zahtevati.

Zabojniki

Tipi kontejnerjev STL

V standardni knjižnici C ++ se zabojniki uporabljajo za upravljanje zbirk in vsebujejo predmete določene vrste. Vsi kontejnerji imajo nabor prednosti in slabosti. Zato so razvili različne vsebnike, primerne za različne zahteve programov. Posode so lahko nizi ali povezani seznami. Prav tako se lahko izvajajo s posebnim ključem za vsak element.




Obstajajo 3 vrste posod:

  • Zaporedne posode. So organizirane zbirke. Vsak element ima svoj položaj, ki je odvisen od časa vstavljanja in ni odvisen od vrednosti elementa. Obstaja pet vrst zaporednih vsebnikov: matrika, vektor, deque, seznam, seznam naprej.
  • Asociativni vsebniki. Urejajo se tudi zbirke elementov, vendar je njihov položaj odvisen od vrednosti samega elementa ali ključa, če so elementi zbirke pari ključne vrednosti. Obstajajo 4 standardna asociacijska vsebnika: set, multiset, map, multimap.
  • Neurejeni asociativni vsebniki. V tem primeru vrednost elementov v zbirki ne vpliva na vrednost ali čas vstavljanja elementa v zbirko. Če vstavite v zbirko n-tega števila elementov, bo njihov naročilo nepredvidljiv. Poleg tega se sčasoma lahko spremeni. Neurejeni kontejnerji so: neurejeni set, neurejeni večstopenjski, neurejeni zemljevidi, neurejeni multimap.

Iteratorji

C + iteratorji

To so mehanizmi, ki se uporabljajo za premikanje elementov v zbirki objektov. V tem primeru so zbirke lahko bodisi zabojniki bodisi njihova podmnožica. Glavna prednost iteratorjev je, da ustvarjajo minimalen, zadosten in univerzalni vmesnik za vse vrste posod. Na primer, ena izmed nalog iteratorja je premikanje po elementih zbirke in ni odvisna od strukture te zbirke, kar je lahko karkoli: matrika, drevo, razpršilna tabela. Iskanje elementov deluje enako.

Vmesnik iteratorjev je podoben delu s kazalci. Na primer, če želite naslednji element prejeti s iteratorjem, morate izvesti operacijo "++" in pridobiti vrednost elementa, na katerega se trenutno usmeri iterator, je operacija "*". Tako je iterator podoben tipu pametnega kazalca.

Algoritmi

Shema algoritma

Glavna naloga algoritmov je obdelava elementov zbirk. Na primer, poiščite ali razvrstite, spremenite ali uporabite vrednost elementa. Algoritmi se izvajajo na račun iteratorjev. Ta pristop vam omogoča, da ustvarite algoritem le enkrat in razširite svoje delo na vse vsebnike prek enotnega vmesnika iteratorjev.

Za zelo zapletene probleme je bil razvit mehanizem za pomožne funkcije, ki jih imenujemo algoritmi. To zagotavlja potrebno prožnost za obravnavanje posebnih primerov. Na primer, lahko programer določi poseben kriterij iskanja. S prihodom lambda funkcij obstajajo možnosti za opis vseh postopkov, izvedenih na elementih kontejnerjev, ko jih prehajajo. Tako knjižnica funkcij C ++ predstavlja zelo prilagodljive funkcije.

Ali STL nasprotuje konceptom OOP?

V knjižnici C ++ podatke STL upravljajo razredi vsebnikov, operacije pa nadzorujejo algoritmi po meri. Izkazalo se je, da koncept knjižnice STL ločuje podatke in operacije, kar je v nasprotju z načeli objektno usmerjeno programiranje, ki zahtevajo kombinacijo podatkov in operacij. Vendar pa je za to izgovor. Zahvaljujoč interakciji vseh algoritmov s kakršnimi koli vsebniki z iteratorji, lahko programer združuje vse podatke z vsemi operacijami. Tako je protislovje z OOP odpravljeno in dosežena je povsem nova stopnja fleksibilnosti.

Vpletenost komponent STL

Zaključek

STL predstavlja nov ali izboljšan pristop k programiranju. Začetki knjižnice so se že zdavnaj pojavili. Prve ideje so se rodile leta 1992-1994. Po mnogih letih razvoja je STL popolnoma integriran v standard C + + 11. Knjižnica ima obsežno funkcionalnost in odlično fleksibilnost, vendar je težko razumljiva. Njena dokumentacija je sestavljena iz več sto spletnih strani (na primer dokumentacije na Microsoft Visual C ++ spletni strani), opis pa zajema 1000 strani knjig. Hkrati je knjižnica aktivno razvita.

Zdieľať na sociálnych sieťach:

Príbuzný