Standardne knjižnice C ++

Standardna knjižnica s predlogami (STL) ali standardna knjižnica predlog je vplivala na arhitekturo C ++ in postala jedro jezika. STL je sklop univerzalnih komponent in naprednih algoritmov za upravljanje podatkov. Zahvaljujoč temu C ++ knjižničnemu programatorju so postali napredni dosežki na področju podatkovnih struktur in učinkovitih algoritmov dostopni brez podrobnega razumevanja njihove strukture in dela.

C ++ gre na novo raven

Za programerja je STL predstavljen z nizom razredov zbirk, namenjenih za določene namene, in z nizom algoritmov, ki lahko delujejo z njimi. Ker so vse knjižnične komponente predloge, jih lahko uporabite za vse vrste elementov. Poleg tega knjižnica omogoča izdelavo lastnih razredov in algoritmov, ki lahko delujejo skupaj z obstoječimi.


Ta pristop organiziranja dela s podatki in algoritmi prikazuje C + + na kvalitativno drugačni ravni abstrakcije. Zdaj programer ni obremenjen z ustvarjanjem dinamičnih nizov, seznamov, dreves, hashov. Prav tako lahko pozabi na programiranje različnih algoritmov za iskanje in izogibanje. S prihodom programatorja STL je dovolj, da določimo ustrezen vsebnik in uporabimo njegove članske funkcije in algoritme za obdelavo. Komponente STL lahko delajo s poljubnimi tipi podatkov. To se doseže z dejstvom, da so vse komponente knjižnice C ++ predloge, ki vam omogočajo uporabo vseh vrst, če so sposobne izvajati zahtevane operacije. To so posode in algoritmiposplošeni glede na vrste. Ta koncept se imenuje generično programiranje.


Kljub spremembam, uvedenim v C ++ s prihodom STL, ne smemo pozabiti, da je bil jezik učinkovito in večnamensko programsko orodje in pred njegovim videzom ter vsemi njegovimi lastnostmi, shranjenimi na C ++ (npr. Knjižnica). sistem ali ctime) in s pojavom STL samo pomnoženo.

Komponente knjižnic

Gradniki knjižnice so dobro strukturirane komponente in njihova dobro delujoča interakcija. Glavni taki bloki so zabojniki, iteratorji in algoritmi. S ++, STL knjižnica zagotavlja neverjetno raven fleksibilnosti programiranja, vendar je težko razumljiva in zahtevna pred razvojem.

Zabojniki

V standardni knjižnici C ++ se vsebniki uporabljajo za upravljanje zbirk in so sestavljeni iz objektov določene vrste. Vse posode imajo vrsto prednosti in slabosti. Zato so različni zabojniki zasnovani tako, da ustrezajo različnim zahtevam, ki jih ponujajo programi. Posode so lahko nizi ali povezani seznami. Prav tako jih je mogoče izvajati s pomočjo posebnega ključa za vsako postavko. Obstajajo 3 vrste posod:
  • Zaporedni zabojniki. To so urejene zbirke. Vsak element ima svoj položaj, ki je odvisen od časa vstavljanja in ni odvisen od vrednosti elementa. Zaporedne posode s 5 različicami: matrika, vektor, deque, seznam, seznam naprej.
  • Združilne posode. Je tudi urejeno zbiranje predmetov, vendar je njihov položaj odvisen od vrednostielement sam ali ključ, če so elementi zbirke par ključ /vrednost. Obstajajo 4 standardna asociativna vsebnika: set, multiset, map, multimap.
  • Neurejene asociativne posode. V tem primeru vrstni red elementov v zbirki ne vpliva na vrednost ali čas vstavitve elementa v zbirko. Če v to zbirko vstavite n-to število postavk, bo njihov vrstni red nepredvidljiv. Poleg tega se lahko sčasoma spremeni. Neurejeni vsebniki so: neurejen nabor, neurejen multiset, neurejen zemljevid, neurejen multimap.
  • Iteratorji

    To so mehanizmi, ki se uporabljajo za izogibanje elementom v zbirki predmetov. V tem primeru so lahko zbirke obeh vsebnikov in njihova podmnožica. Glavna prednost iteratorjev je, da ustvarijo minimalen, zadosten in vsestranski vmesnik za vse vrste posod. Na primer, ena od nalog iteratorjev je premikanje elementov zbirke in ni odvisna od strukture te zbirke, ki je lahko karkoli: array, tree, hash table. Izbira predmetov deluje na enak način.
    Vmesnik samih iteratorjev je podoben delu s kazalci. Na primer, da bi dobili iterator naslednjega elementa, morate izvesti operacijo "++" in dobiti vrednost elementa, ki trenutno prikazuje iterator, - operacijo "*". Tako je iterator podoben intelektualnemu kazalcu.

    Algoritmi

    Glavna naloga algoritmov je ravnanje z elementi zbirk. Na primer poiščite ali razvrstite, spremenite ali uporabite vrednosti elementov.Algoritmi se izvajajo na račun iteratorjev. Ta pristop vam omogoča, da ustvarite algoritem samo enkrat in razširite njegovo delo na vse kontejnerje zaradi enotnega iteratorja vmesnika. Mehanizem pomožnih funkcij, ki ga povzročajo algoritmi, je razvit za izredno kompleksne naloge. To zagotavlja potrebno prožnost za obravnavo posebnih primerov. Programer lahko na primer zahteva specifični kriterij iskanja. S prihodom lambda funkcij je bilo mogoče opisati vse operacije, ki se izvajajo na elementih zabojnikov, ko so zamenjane. Tako je knjižnica C ++ funkcij zelo fleksibilna.

    V nasprotju s STL koncepti PLO?

    V C ++ knjižnici so podatki STL pod nadzorom kontejnerskih razredov, operacije pa so konfigurirane z algoritmi. Izkazalo se je, da koncept knjižnice STL deli podatke in operacije, kar je v nasprotju z načeli objektno usmerjenega programiranja, ki zahtevajo združevanje podatkov in operacij. Vendar je to izgovor. Zaradi interakcije vseh algoritmov s katerim koli vsebnikom preko iteratorjev lahko programer kombinira vse podatke z vsemi operacijami. Tako se odpravi protislovje z OOP in doseže popolnoma nova stopnja fleksibilnosti.

    Sklep

    STL je nov ali izboljšan pristop k programiranju. Začetki knjižnice so se pojavili že zdavnaj. Prve ideje so nastale v letih 1992-1994. Po mnogih letih razvoja se je STL popolnoma integriral v C ++ 11 standard. Knjižnica ima veliko funkcionalnost in veliko prilagodljivost, vendar s temtežko razumeti. V dokumentacijo je vključenih na stotine spletnih strani (na primer dokumentacija na strani knjižnice Microsoft Visual C ++), knjiga pa vsebuje 1000 strani opisa. V tem primeru se knjižnica aktivno razvija.

    Sorodne publikacije