Tutoriel C++ STL


Dans les chapitres précédents, nous avons appris le concept des modèles C++. C++ STL (Standard Template Library) est un ensemble de classes de modèles C++ puissantes qui fournissent des classes et des fonctions de modèles communes. Ces classes et fonctions de modèles peuvent implémenter une variété d'algorithmes et de structures de données populaires et couramment utilisés, tels que des vecteurs, des listes chaînées et. files d'attente, pile.

Le cœur de la bibliothèque de modèles standard C++ comprend les trois composants suivants :

组件描述
容器(Containers)容器是用来管理某一类对象的集合。C++ 提供了各种不同类型的容器,比如 deque、list、vector、map 等。
算法(Algorithms)算法作用于容器。它们提供了执行各种操作的方式,包括对容器内容执行初始化、排序、搜索和转换等操作。
迭代器(iterators)迭代器用于遍历对象集合的元素。这些集合可能是容器,也可能是容器的子集。

Ces trois composants sont tous dotés de riches fonctions prédéfinies pour nous aider à gérer des tâches complexes de manière simple.

Le programme suivant présente un conteneur vectoriel (un modèle standard C++), qui est très similaire à un tableau. La seule différence est que le vecteur gère automatiquement ses propres besoins de stockage lorsqu'il doit être développé :

#include <iostream>
#include <vector>
using namespace std;
 
int main()
{
   // 创建一个向量存储 int
   vector<int> vec; 
   int i;

   // 显示 vec 的原始大小
   cout << "vector size = " << vec.size() << endl;

   // 推入 5 个值到向量中
   for(i = 0; i < 5; i++){
      vec.push_back(i);
   }

   // 显示 vec 扩展后的大小
   cout << "extended vector size = " << vec.size() << endl;

   // 访问向量中的 5 个值
   for(i = 0; i < 5; i++){
      cout << "value of vec [" << i << "] = " << vec[i] << endl;
   }

   // 使用迭代器 iterator 访问值
   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 produira les résultats suivants :

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

Il y a quelques points à noter concernant les différentes fonctions utilisées dans l'exemple ci-dessus :

< Le 🎜>
  • La fonction membre push_back() insère une valeur à la fin du vecteur, étendant la taille du vecteur si nécessaire. La fonction

  • size( ) affiche la taille d'un vecteur. La fonction

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

  • end() renvoie un itérateur pointant vers la fin du vecteur.