Tutoriel C ++ STL

J'espère que vous avez déjà compris le concept de modèle C ++ dont nous avons discuté précédemment. Le C ++ STL (Standard Template Library) est un ensemble puissant de classes de modèles C ++ pour fournir des classes et des fonctions à usage général avec des modèles qui implémentent de nombreux algorithmes et structures de données populaires et couramment utilisés tels que des vecteurs, des listes, des files d'attente et des piles.

Au cœur de la bibliothèque de modèles standard C ++ se trouvent trois composants bien structurés -

Sr.Non Composant et description
1

Containers

Les conteneurs sont utilisés pour gérer des collections d'objets d'un certain type. Il existe plusieurs types de conteneurs tels que deque, liste, vecteur, carte, etc.

2

Algorithms

Les algorithmes agissent sur les conteneurs. Ils fournissent les moyens par lesquels vous effectuerez l'initialisation, le tri, la recherche et la transformation du contenu des conteneurs.

3

Iterators

Les itérateurs sont utilisés pour parcourir les éléments de collections d'objets. Ces collections peuvent être des conteneurs ou des sous-ensembles de conteneurs.

Nous discuterons des trois composants C ++ STL dans le prochain chapitre tout en discutant de la bibliothèque standard C ++. Pour l'instant, gardez à l'esprit que les trois composants ont un riche ensemble de fonctions prédéfinies qui nous aident à effectuer des tâches complexes de manière très simple.

Prenons le programme suivant qui montre le conteneur vectoriel (un modèle standard C ++) qui est similaire à un tableau à l'exception qu'il gère automatiquement ses propres besoins de stockage au cas où il grandirait -

#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;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

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

Voici les points suivants à noter liés aux diverses fonctions que nous avons utilisées dans l'exemple ci-dessus -

  • La fonction membre push_back () insère une valeur à la fin du vecteur, augmentant sa taille si nécessaire.

  • La fonction size () affiche la taille du vecteur.

  • La fonction begin () renvoie un itérateur au début du vecteur.

  • La fonction end () renvoie un itérateur à la fin du vecteur.