Biblioteci standard C ++

Biblioteca de șabloane standard (STL),

sau o bibliotecă de șabloane standard, a influențat arhitectura C ++ și a devenit nucleul limbii. STL este un set de componente universale și algoritmi moderni de înaltă performanță pentru gestionarea datelor. Datorită acestei biblioteci C ++, programatorul a câștigat realizări avansate în domeniul structurilor de date și al algoritmilor eficienți fără a fi nevoie de o înțelegere detaliată a structurii și a muncii lor.

C ++ merge la un nou nivel

Nivel C ++ nou

Pentru un programator, un STL este reprezentat de un set de clase de colectare destinate unor scopuri specifice și un set de algoritmi care pot funcționa cu aceștia. Datorită faptului că toate componentele bibliotecii sunt șabloane, ele pot fi folosite pentru orice tip de element. În plus, biblioteca vă permite să vă construiți propriile clase și algoritmi care pot funcționa împreună cu cele existente.

Această abordare a organizării muncii cu date și algoritmi ia C ++ calitativ într-un alt nivel de abstractizare. Acum, programatorul nu este împovărat de crearea de tabele dinamice, liste, copaci, hashes. De asemenea, el poate uita despre programarea algoritmilor de căutare și de traversare. Odată cu apariția STL, este suficient ca programatorul să determine containerul corespunzător și să utilizeze funcțiile sale membre și algoritmi de procesare.

Componentele STL pot lucra cu tipuri arbitrare de date. Acest lucru se realizează prin faptul că toate componentele bibliotecii C ++ sunt șabloane care permit utilizarea oricăror tipuri dacă sunt capabile să efectueze operațiile necesare. Adică containerele și algoritmii sunt generalizați în funcție de tipuri. Acest concept se numește programare generalizată.

În ciuda schimbărilor care au fost introduse în C ++, odată cu apariția STL, nu trebuie să uităm că limba este un program eficient și versatil instrument și înainte de apariția sa, și toate caracteristicile sale C ++ conservate (de exemplu, sistemul de bibliotecă sau ctime), și odată cu apariția STL numai am multiplicat.

Componente ale bibliotecii

Blocurile de construcție ale bibliotecii sunt componente structurate cu atenție și interacțiunea lor depanată. Principalele astfel de blocuri sunt containerele, iteratorii și algoritmii. C ++ biblioteca STL oferă un nivel uimitor de flexibilitate în programare, dar este dificil de înțeles și cerând să timpului de dezvoltare.

containere

STL tipuri de containere

În biblioteca standard C ++, containerele sunt folosite pentru a gestiona colecțiile și constau în obiecte de un anumit tip. Toate containerele au un set de argumente pro și contra. Prin urmare, au fost dezvoltate containere diferite, potrivite pentru diferite cerințe ale programelor. Containerele pot fi tabele sau linkuri legate. Ele pot fi de asemenea implementate cu o cheie specială pentru fiecare element.



Există 3 tipuri de recipiente:

  • Containere consecutive. Sunt colecții organizate. Fiecare element are o poziție proprie, care depinde de timpul de inserție și nu depinde de valoarea elementului. Există cinci tipuri de containere consecutive: array, vector, deque, list, forward.
  • Containere asociative. Ele sunt, de asemenea, comandate colecții de elemente, dar poziția lor depinde de valoarea elementului însuși sau a cheii, dacă elementele colecției sunt perechi cheie-valoare. Există 4 containere asociative standard: set, multiset, hartă, multimap.
  • Portofele asociative neordonate. În acest caz, valoarea elementelor din colecție nu este afectată de valoarea sau timpul de introducere a elementului în colecție. Dacă introduceți în colecția celui de-al n-lea număr de elemente, ordinea lor va fi imprevizibilă. Mai mult, cu timpul se poate schimba. Portofele neordonate sunt: ​​seturi neordonate, multiset neordonate, hartă neordonată, multimap neordonat.

iteratori

C ++ Iteratoare

Acestea sunt mecanismele folosite pentru a traversa elementele dintr-o colecție de obiecte. În acest caz, colecțiile pot fi fie containere, fie subsetul lor. Principalul avantaj al iteratorilor este acela că ele creează o interfață minimală, suficientă și universală pentru orice tip de container. De exemplu, unul dintre obiectivele este de a muta iterator pe elementele de colectare și nu depinde de structura de colectare, care poate fi orice: o matrice, copac, tabel hash. Căutarea elementelor funcționează la fel.

Interfața iteratorilor în sine este similară cu lucrul cu indicii. De exemplu, pentru a obține un element următor iterator aveți nevoie pentru a efectua operația „++“, și pentru a obține valoarea elementului pe care iterator este în prezent îndreptat, - operația „*“. Astfel, iteratorul este similar cu un fel de pointer inteligent.

algoritmi

Schema de algoritmi

Sarcina principală a algoritmilor este procesarea elementelor colecțiilor. De exemplu, căutați sau sortați, modificați sau utilizați valoarea unui element. Algoritmii sunt implementați în detrimentul iteratorilor. Această abordare vă permite să creați un algoritm o singură dată și să vă extindeți activitatea la orice containere printr-o singură interfață de iteratori.

Pentru probleme extrem de complexe, a fost dezvoltat un mecanism pentru funcțiile auxiliare, care sunt numite de algoritmi. Aceasta oferă flexibilitatea necesară pentru a gestiona cazurile specifice. De exemplu, un programator poate specifica un criteriu special de căutare. Odată cu apariția funcțiilor lambda, există oportunități de a descrie orice operațiuni efectuate asupra elementelor containerelor atunci când sunt traversate. Astfel, biblioteca de funcții C ++ prezintă caracteristici foarte flexibile.

Confruntă STL cu conceptele OOP?

În biblioteca C ++, datele STL sunt gestionate de clase de containere, iar operațiile sunt controlate de algoritmi personalizați. Se pare că conceptul bibliotecii STL separă datele și operațiunile, care contravin principiilor programare orientată pe obiecte, care necesită combinarea datelor și operațiunilor. Cu toate acestea, există o scuză pentru acest lucru. Datorită interacțiunii oricăror algoritmi cu orice containere de iteratori, programatorul poate combina orice date cu orice operațiuni. Astfel, contradicția cu OOP este eliminată și se atinge un nivel complet nou de flexibilitate.

Interacțiunea componentelor STL

concluzie

STL reprezintă o abordare nouă sau îmbunătățită a programării. Începuturile bibliotecii au apărut cu mult timp în urmă. Primele idei s-au născut în 1992-1994. După mulți ani de dezvoltare, STL a fost complet integrat în standardul C ++ 11. Biblioteca are o funcționalitate extinsă și o flexibilitate excelentă, dar este greu de înțeles. Documentația sa cuprinde sute de pagini web (de exemplu, documentația pe site-ul web Microsoft Visual C ++), iar descrierea ocupă 1000 de pagini de cărți. În același timp, biblioteca este în dezvoltare activă.

Distribuiți pe rețelele sociale:

înrudit
Biblioteci din Kazan: descriere, adreseBiblioteci din Kazan: descriere, adrese
Proprietăți și metode de algoritmi de înregistrareProprietăți și metode de algoritmi de înregistrare
Ce sunt algoritmii și de ce sunt necesare?Ce sunt algoritmii și de ce sunt necesare?
Tipuri de bază și exemple de algoritmi cicliciTipuri de bază și exemple de algoritmi ciclici
Biblioteca în ziua deschisă. Biblioteca pentru copii. Evenimente în bibliotecăBiblioteca în ziua deschisă. Biblioteca pentru copii. Evenimente în bibliotecă
Biblioteca VSU este cel mai mare centru științific și de informare din regiunea Centrală a…Biblioteca VSU este cel mai mare centru științific și de informare din regiunea Centrală a…
Biblioteca Nikitinsky din Voronej: istoria creației și a vieții instituției de astăziBiblioteca Nikitinsky din Voronej: istoria creației și a vieții instituției de astăzi
Biblioteca cu usi din sticla: soiuri si caracteristici de designBiblioteca cu usi din sticla: soiuri si caracteristici de design
De ce nu funcționează "LitMir"? Când va fi deschis?De ce nu funcționează "LitMir"? Când va fi deschis?
Bibliotecile din Moscova: un nou aspect al unităților obișnuiteBibliotecile din Moscova: un nou aspect al unităților obișnuite
» » Biblioteci standard C ++