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.