Štandardné knižnice C ++

Štandardná knižnica šablón (STL) alebo štandardná knižnica šablón ovplyvnila architektúru C ++ a stala sa jadrom jazyka. STL je súbor univerzálnych komponentov a pokročilých vysokovýkonných algoritmov na správu údajov. Vďaka tomuto programátorovi knižnice C ++ sa sprístupnili pokrokové úspechy v oblasti dátových štruktúr a efektívnych algoritmov bez potreby detailného pochopenia ich štruktúry a práce.

C ++ ide na novú úroveň

Pre programátora je STL reprezentovaná množinou tried kolekcií určených na určené účely a súborom algoritmov, ktoré s nimi môžu pracovať. Vzhľadom na skutočnosť, že všetky komponenty knižnice sú šablóny, môžu byť použité pre akýkoľvek typ prvku. Knižnica navyše umožňuje vytvárať vlastné triedy a algoritmy, ktoré dokážu spolupracovať s existujúcimi triedami a algoritmami.


Tento prístup k organizácii práce s údajmi a algoritmami zobrazuje C + + na kvalitatívne odlišnej úrovni abstrakcie. Teraz programátor nie je zaťažený vytvorením dynamických polí, zoznamov, stromov, hashov. Môže tiež zabudnúť na programovanie rôznych algoritmov na vyhľadávanie a obídenie. S príchodom programátora STL postačí určiť vhodný kontajner a použiť jeho funkčné členy a algoritmy spracovania. Komponenty STL sú schopné pracovať s ľubovoľnými dátovými typmi. To je dosiahnuté skutočnosťou, že všetky súčasti knižnice C ++ sú šablóny, ktoré umožňujú používať akékoľvek typy, ak sú schopné vykonávať požadované operácie. To znamená, kontajnery a algoritmyvšeobecné vzhľadom na typy. Tento koncept sa nazýva generické programovanie.


Cez zmeny, ktoré boli zavedené v jazyku C ++ s príchodom STK, nezabudnite, že sa jedná o efektívny a univerzálny programovací nástroj a jeho vzhľad a všetky jeho funkcie C ++ zachované (napríklad knižnicu systém alebo čas) a s násobením výskytu STL.

Zložky Library

Stavebné bloky knižnice sú starostlivo štruktúrované prvky a ich nedostatok spolupráce. Hlavnými takými blokmi sú kontajnery, iterátory a algoritmy. Knižnica C ++ STL poskytuje úžasnú flexibilitu v programovaní, ale je to ťažké pochopiť a časovo náročné zvládnuť.

Kontajnery

Štandardná knižnica C ++ kontajnery použité na riadenie odberu a skladajú z objektov určitého typu. Všetky kontajnery majú rad výhod a nevýhod. Preto sú rôzne kontajnery navrhnuté tak, aby vyhovovali rôznym požiadavkám, ktoré ponúkajú programy. Kontajnery môžu byť pole alebo prepojené zoznamy. Môžu byť tiež implementované pomocou špeciálneho kľúča pre každú položku. Existujú tri typy kontajnerov:
  • Nasledujúce kontajnery. Sú to objednané zbierky. Každá položka má svoj vlastný pozíciu, ktorá je závislá na čase zavádzania a nezávisí na hodnote položky. 5 sekvenčné druhy kontajnerov: pole, vektor, deque, zoznam, dopredu zoznam.
  • Asociačné kontajnery. Je to tiež objednaná zbierka položiek, ale ich pozícia závisí od hodnotysamotný prvok alebo kľúč, ak prvky kolekcie sú pár kľúč-hodnota. K dispozícii sú 4 štandardné asociatívne kontajnery: set, multiset, map, multimap.
  • Nesprávne asociatívne kontajnery. V tomto prípade poradie prvkov v zbierke neovplyvňuje ani hodnotu, ani čas vloženia prvku do kolekcie. Ak vložíte do tejto zbierky n-tý počet položiek, ich objednávka bude nepredvídateľná. Navyše sa to môže časom zmeniť. Neusporiadané kontajnery sú: neusporiadaná sada, neusporiadaná viacnásobná zostava, neusporiadaná mapa, neusporiadaná multimap.
  • Iterátory

    Ide o mechanizmy, ktoré sa používajú na obchádzanie prvkov v zbierke objektov. V tomto prípade môžu byť zbierky oba kontajnery a ich podmnožina. Hlavnou výhodou iterátorov je, že vytvárajú minimálne, dostatočné a všestranné rozhranie pre akýkoľvek typ kontajnera. Jednou z úloh iterátorov je napríklad presun prvkov kolekcie a nezávisí od štruktúry tejto kolekcie, ktorá môže byť čokoľvek: pole, strom, tabuľka hash. Výber položiek funguje rovnakým spôsobom.
    Rozhranie samotných iterátorov je podobné práci s ukazovateľmi. Napríklad, ak chcete získať iterátor ďalšieho prvku, musíte vykonať operáciu "++" a získať hodnotu elementu, ktorý v súčasnosti indikuje iterátor, - operáciu "*". Iterátor je teda podobný druhu intelektuálneho ukazovateľa.

    Algoritmy

    Hlavnou úlohou algoritmov je zvládnuť prvky zbierok. Môžete napríklad vyhľadávať alebo triediť, upravovať alebo používať hodnoty položiek.Algoritmy sa implementujú na úkor iterátorov. Tento prístup umožňuje vytvoriť algoritmus raz a distribuovať prácu na každom rozhraní pomocou jediného kontajnera iterátory. Mechanizmus pomocných funkcií spôsobený algoritmami je vyvinutý pre veľmi zložité úlohy. To poskytuje potrebnú flexibilitu na zvládnutie špecifických prípadov. Napríklad programátor môže požiadať o špecifické vyhľadávacie kritérium. S lambda funkcie boli možnosti, ako opísať akúkoľvek transakciu vykonanú v priebehu prvkov v ich kontajnery obmynannya. Takže knižnica funkcií C ++ je veľmi flexibilná.

    Na rozdiel od koncepcií STO o PLO?

    v jazyku C ++ knižnica STL riadené dát kontajner triedy a operácie - prispôsobené algoritmy. Ukazuje sa, že pojem knižnice STL oddeľuje dát a transakcií v rozpore s princípmi objektovo orientovaného programovania, ktoré vyžadujú integráciu dát a operácií. To je však výhovorka. Interakcia akýchkoľvek algoritmov s žiadne nádoby iterátory programátorom možno kombinovať akékoľvek údaje zo všetkých transakcií. Tým sa odstráni rozpor s OOP a dosiahne sa úplne nová úroveň flexibility.

    Záver

    STL je nový alebo vylepšený prístup k programovaniu. Začiatky knižnice sa objavili už dávno. Prvé myšlienky vznikli v rokoch 1992-1994. Po mnohých rokoch vývoja sa STL stal plne integrovaným do štandardného jazyka C ++ 11. Knižnica má veľkú funkčnosť a veľkú flexibilitu, ale s týmťažké pochopiť. Jeho dokumentácia obsahuje stovky webových stránok (napríklad dokumentáciu na webe knižnice Microsoft Visual C ++) a kniha obsahuje 1000+ stránok popisu. V tomto prípade je knižnica v aktívnom vývoji.

    Súvisiace publikácie