STL în c ++: tot ce trebuie să știți



Acest articol vă va oferi o cunoaștere detaliată și cuprinzătoare a STL în C ++ și vă va oferi o idee despre diferitele containere.

Biblioteca de șabloane standard (STL) este un set de clase de șabloane C ++ pentru a furniza structuri și funcții comune de date de programare, cum ar fi liste, stive, tablouri etc. În acest articol STL din C ++ vom discuta despre următoarele indicii:

Continuăm cu acest articol despre STL în C ++





este kotlin mai bun decât java

Șabloane C ++

C ++ ne oferă o caracteristică de șabloane care permite funcțiilor și claselor să funcționeze cu tipuri generice. Acest lucru permite reutilizarea unei funcții sau clase și îi permite să lucreze pe mai multe tipuri de date diferite, fără a fi rescris pentru fiecare.

Continuăm cu acest articol despre STL în C ++



Funcții generice și STL

În timp ce programați de multe ori, este necesar să creați funcții care efectuează aceleași operații, dar care funcționează cu diferite tipuri de date. Deci, pentru a depăși această problemă, C ++ oferă o caracteristică pentru a crea o singură funcție generică în loc de multe funcții care pot funcționa cu diferite tipuri de date utilizând parametrul șablon. Colecția acestor clase și funcții genetice se numește Standard Template Library (STL)

Componentele STL care fac acum parte din biblioteca standard C ++ sunt definite în spațiul de nume std. Prin urmare, trebuie să folosim directiva folosind spațiul de nume pentru a le importa în programul nostru.

Sintaxă:



Utilizarea spațiului de nume std

STL are trei componente

  • Containere

  • Algoritmi

  • Iteratori

Aceste trei componente funcționează împreună în sinergie pentru a oferi suport pentru o varietate de soluții de programare. Algoritmul folosește iteratori pentru a efectua operațiuni stocate în containere.

Un container este un obiect care stochează datele în memorie într-un mod organizat. Containerele din STL sunt implementate prin clase de șabloane și, prin urmare, pot fi ușor modificate și personalizate pentru a conține diferite tipuri de date.

O procedură care este utilizată pentru procesarea datelor conținute în containere este definită ca un algoritm. STL include multe tipuri diferite de algoritmi pentru a oferi suport pentru sarcini precum inițializarea, căutarea, copierea, sortarea și fuzionarea, copierea, sortarea și fuzionarea. Algoritmii sunt implementați prin funcții șablon.

Un iterator poate fi definit ca un obiect care indică un element dintr-un container. Iteratoarele pot fi folosite pentru deplasarea prin conținutul containerelor. Iteratorii sunt tratați la fel ca indicii. Le putem incrementa sau decrementa. Iteratorii conectează algoritmul cu containerele și joacă un rol cheie în manipularea datelor stocate în containere.

Container-STL-in-C++

Continuăm cu acest articol despre STL în C ++

Containere

STL definește zece containere care sunt grupate în trei categorii.

Containere

Descriere

Fișier antet

Iterator

Vector

Poate fi definit ca o matrice dinamică. Permite accesul direct la orice element.

Acces aleatoriu

Listă

Este o listă liniară bidirecțională. Permite inserarea și ștergerea oriunde

Bidirecțional

și

Este o coadă dublă. Permite inserții și ștergeri la ambele capete. Permite accesul direct la orice element.

Acces aleatoriu

a stabilit

Este un container asociat pentru stocarea seturilor unice. Permite căutare rapidă.

Bidirecțional

multiset

Este un container asociat pentru stocarea seturilor non-unice.

Bidirecțional

Hartă

Este un container asociat pentru stocarea perechilor cheie / valoare unice. Fiecare cheie este asociată cu o singură valoare.

Bidirecțional

multimapă

Este un container asociat pentru stocarea cheii / valorii în care o cheie poate fi asociată cu mai multe valori (mapare de la unu la mai mulți). Permite o căutare bazată pe cheie.

Bidirecțional

grămadă

O stivă standard urmează ultimul-în-primul-ieșire (LIFO)

Nici un iterator

coadă

Urmează o coadă standard first-in-first-out (FIFO)

amestecarea datelor în tabelul 10

Nici un iterator

prioritate-coadă

Primul element de ieșire este întotdeauna elementul cu cea mai mare prioritate

Nici un iterator

Containere pentru secvențe

Containerele secvențiale stochează elementele într-o ordine liniară. Toate elementele sunt legate între ele prin poziția lor de-a lungul liniei. Permit inserarea elementului și toate suportă mai multe operații pe ele.

STL oferă trei tipuri de elemente de secvență:

  • Vector
  • Listă
  • și

Containere asociative:

Acestea sunt proiectate în așa fel încât să poată sprijini accesul direct la elemente folosind taste. Nu sunt secvențiale. Există patru tipuri de

containere asociative:

  1. A stabilit
  2. Multiset
  3. Hartă
  4. Multimap

Toate containerele de mai sus stochează datele într-o structură numită copac care facilitează rapiditatea

căutarea, ștergerea și inserarea spre deosebire de secvențiale. Setul de containere sau multiset poate stoca diverse articole și poate oferi operațiuni pentru manipularea acestora folosind valorile ca chei.

Și harta sau Multimap sunt folosite pentru a stoca articole în perechi, una numită cheie și alta

numită valoare.

Containere derivate:

STL oferă trei containere derivate și anume, stivă, coadă și prioritate_coadă. Acestea sunt, de asemenea, cunoscute sub numele de adaptoare pentru containere.

Există trei tipuri de containere derivate:

1. Stiva

2. Coadă

3. Priority_quue

Stivele, coada și coada prioritară pot fi create cu ușurință din diferite containere de secvență. Containerele derivate nu acceptă iteratorii și, prin urmare, nu le putem folosi pentru manipularea datelor. Cu toate acestea, acestea acceptă funcția cu doi membri pop () și push () pentru implementarea operațiilor de ștergere și inserare.

Continuăm cu acest articol despre STL în C ++

Algoritmi

Algoritmii sunt funcții care pot fi utilizate în general pe o varietate de containere pentru procesarea conținutului lor. Deși fiecare container oferă funcții pentru operațiunile sale de bază, STL oferă mai mult de șaizeci de algoritmi standard pentru a susține operațiuni mai extinse sau mai complexe. Algoritmii standard ne permit, de asemenea, să lucrăm cu două tipuri diferite de containere în același timp.

Algoritmii STL consolidează filosofia reutilizării. Prin utilizarea acestor algoritmi, programatorii pot economisi mult timp și efort. Pentru a avea acces la algoritmii STL, trebuie să includem în programul nostru.

Algoritmul STL, pe baza naturii operațiunilor pe care le efectuează, poate fi clasificat ca:

  • Algoritmi nemutatori

  • Algoritmi de mutare

  • Algoritmi de sortare

  • Setați algoritmi

  • Algoritm relațional

Continuăm cu acest articol despre STL în C ++

Iteratori:

Iteratorii acționează ca niște indicatori și sunt folosiți pentru a accesa elementele containerului. Folosim iteratori pentru a ne deplasa prin conținutul containerelor. Iteratorii sunt tratați la fel ca indicii. Le putem incrementa sau diminua conform cerințelor noastre. Iteratorii conectează containerele cu algoritmi și joacă un rol vital în manipularea datelor stocate în containere. Acestea sunt adesea folosite pentru a trece de la un element la altul, acest proces se numește iterare prin container.

Există cinci tipuri de iteratori:

1. Introducere

2. Ieșire

3. Înainte

4. bidirecțional

5. Aleatorie

Iterator

Metoda de acces

Direcția de mișcare

Capacitate I / O

Observație

Intrare

Liniar

Numai înainte

Numai în citire

Nu poate fi salvat

Ieșire

Liniar

Numai înainte

Scrie doar

Nu poate fi salvat

Redirecţiona

Liniar

Numai înainte

Citeste, scrie

Poate fi salvat

Bidirecțional

Liniar

Înainte și înapoi

Citeste, scrie

Poate fi salvat

Aleatoriu

Aleatoriu

Înainte și înapoi

Citeste, scrie

Poate fi salvat

cum se imprimă jurnalul de comitere git

Trebuie utilizate diferite tipuri de iteratoare cu diferite tipuri de containere, astfel încât numai

secvența și containerele asociative sunt permise să circule prin iteratoare. Fiecare tip de iteratori este utilizat pentru îndeplinirea anumitor funcții. Iteratorii de intrare și ieșire acceptă cele mai puține funcții. Ele pot fi folosite doar pentru a trece printr-un container. Iteratorii forward susțin toate operațiile de iteratoare de intrare și ieșire și își păstrează, de asemenea, poziția în container. Un iterator bidirecțional, în timp ce susține toate operațiunile iteratorilor înainte, oferă posibilitatea de a vă deplasa în direcția înapoi în container.

Astfel am ajuns la sfârșitul acestui articol despre „STL în C ++”. Dacă doriți să aflați mai multe, consultați de Edureka, o companie de învățare online de încredere. Cursul de formare și certificare Java J2EE și SOA al Edureka este conceput pentru a vă instrui atât pentru conceptele Java de bază, cât și pentru cele avansate, împreună cu diverse cadre Java, cum ar fi Hibernate & Spring.

Ai o întrebare pentru noi? Vă rugăm să o menționați în secțiunea de comentarii a acestui blog și vă vom contacta cât mai curând posibil.