Tutorial C ++ STL

Spero che tu abbia già compreso il concetto di modello C ++ di cui abbiamo discusso in precedenza. La C ++ STL (Standard Template Library) è un potente set di classi template C ++ per fornire classi e funzioni generiche con modelli che implementano molti algoritmi e strutture dati popolari e comunemente usati come vettori, elenchi, code e stack.

Al centro della libreria di modelli standard C ++ ci sono tre componenti ben strutturati:

Suor n Componente e descrizione
1

Containers

I contenitori vengono utilizzati per gestire raccolte di oggetti di un certo tipo. Esistono diversi tipi di contenitori come deque, list, vector, map ecc.

2

Algorithms

Gli algoritmi agiscono sui contenitori. Forniscono i mezzi con cui eseguire l'inizializzazione, l'ordinamento, la ricerca e la trasformazione del contenuto dei contenitori.

3

Iterators

Gli iteratori vengono utilizzati per scorrere gli elementi delle raccolte di oggetti. Queste raccolte possono essere contenitori o sottoinsiemi di contenitori.

Discuteremo di tutti e tre i componenti STL C ++ nel prossimo capitolo mentre discuteremo della libreria standard C ++. Per ora, tieni presente che tutti e tre i componenti hanno un ricco set di funzioni predefinite che ci aiutano a svolgere compiti complicati in modo molto semplice.

Prendiamo il seguente programma che dimostra il contenitore vettoriale (un modello standard C ++) che è simile a un array con l'eccezione che gestisce automaticamente i propri requisiti di archiviazione nel caso in cui cresca:

#include <iostream>
#include <vector>
using namespace std;
 
int main() {

   // create a vector to store int
   vector<int> vec; 
   int i;

   // display the original size of vec
   cout << "vector size = " << vec.size() << endl;

   // push 5 values into the vector
   for(i = 0; i < 5; i++) {
      vec.push_back(i);
   }

   // display extended size of vec
   cout << "extended vector size = " << vec.size() << endl;

   // access 5 values from the vector
   for(i = 0; i < 5; i++) {
      cout << "value of vec [" << i << "] = " << vec[i] << endl;
   }

   // use iterator to access the values
   vector<int>::iterator v = vec.begin();
   while( v != vec.end()) {
      cout << "value of v = " << *v << endl;
      v++;
   }

   return 0;
}

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

vector size = 0
extended vector size = 5
value of vec [0] = 0
value of vec [1] = 1
value of vec [2] = 2
value of vec [3] = 3
value of vec [4] = 4
value of v = 0
value of v = 1
value of v = 2
value of v = 3
value of v = 4

Di seguito sono riportati i punti da notare relativi alle varie funzioni che abbiamo utilizzato nell'esempio precedente:

  • La funzione membro push_back () inserisce un valore alla fine del vettore, espandendone le dimensioni secondo necessità.

  • La funzione size () mostra la dimensione del vettore.

  • La funzione begin () restituisce un iteratore all'inizio del vettore.

  • La funzione end () restituisce un iteratore alla fine del vettore.