Biblioteci standard C ++
Biblioteca de șabloane standard (STL),
conținut
C ++ merge la un nou nivel
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
Î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
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
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.
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ă.
- Bibliotecile din Krasnodar: lista, descrierea, adresele
- Biblioteci din Kazan: descriere, adrese
- Proprietăți și metode de algoritmi de înregistrare
- Ce sunt algoritmii și de ce sunt necesare?
- Tipuri de bază și exemple de algoritmi ciclici
- 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 Nikitinsky din Voronej: istoria creației și a vieții instituției de astăzi
- Biblioteca cu usi din sticla: soiuri si caracteristici de design
- De ce nu funcționează "LitMir"? Când va fi deschis?
- Bibliotecile din Moscova: un nou aspect al unităților obișnuite
- AES: criptarea datelor
- Biblioteca. Semnificația cuvântului, etimologie, ortografie
- Chelyabinsk Regional Biblioteca Universală Științifică: Ziua de ieri și de azi
- Tipuri de algoritmi în informatică: exemple
- Folosind indexOf (jаvascript) atunci când lucrați cu matrice și șiruri de caractere
- Definiție, proprietăți și tipuri de algoritmi
- Rezolvarea problemelor de programare. Algoritmul ciclic
- Merge sort: o descriere a funcționării algoritmului și diferențele față de alte tipuri de ordonare…
- Exemplu de jQuery. Exemple simple de script-uri pe jQuery
- Expresii regulate ale Notepad: descriere, înlocuire și exemple