English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
STL est l'abréviation de «Standard Template Library», traduit en chinois par «bibliothèque de modèles standard». STL est C++ Une partie de la bibliothèque standard, pas besoin d'être installée séparément.
Dans les chapitres précédents, nous avons déjà appris C++ Le concept de modèle. C++ STL (Standard Template Library) est un ensemble de bibliothèques C++ La classe modèle, qui fournit des classes et des fonctions générales, ces classes et fonctions peuvent réaliser de nombreuses algorithmes et structures de données populaires et courantes, telles que les vecteurs, les listes chainées, les files, et les piles.
C++ 对模板(Template)支持得很好,STL
就是借助模板把常用的数据结构及其算法都实现了一遍,并且做到了数据结构和算法的分离。例如,vector 的底层为顺序表(数组),list
的底层为双向链表,deque 的底层为循环队列,set 的底层为红黑树,hash_set 的底层为哈希表。
C++ 标准模板库的核心包括以下三个组件:
组件 | 描述 |
---|---|
容器(Containers) | 容器是用来管理某一类对象的集合。C++ 提供了各种不同类型的容器,比如 deque、list、vector、map 等。 |
算法(Algorithms) | 算法作用于容器。它们提供了执行各种操作的方式,包括对容器内容执行初始化、排序、搜索和转换等操作。 |
迭代器(iterators) | 迭代器用于遍历对象集合的元素。这些集合可能是容器,也可能是容器的子集。 |
这三个组件都带有丰富的预定义函数,帮助我们通过简单的方式处理复杂的任务。
下面的程序演示了向量容器(一个 C++ 标准的模板),它与数组十分相似,唯一不同的是,向量在需要扩展大小的时候,会自动处理它自己的存储需求:
#include <iostream> #include <vector> using namespace std; int main() { // 创建一个向量存储 int vector<int> vec; int i; // 显示 vec 的原始大小 cout << "vec 的原始大小 = " << vec.size() << endl; // 添加 6 个值到向量中 for(i = 0; i < 6; i++} vec.push_back(i+1; } // 显示 vec 扩展后的大小 cout << "vec 扩展后的大小 = " << vec.size() << endl; // 访问向量中的 5 个值 for(i = 0; i < 5; i++} cout << " vec[" << i << "] 的值= " << vec[i] << endl; } // 使用迭代器 iterator 访问值 vector<int>::iterator v = vec.begin(); while( v != vec.end()) { cout << "v 的值 = " << *v << endl; v++; } return 0; }
Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants :
La taille originale de vec est = 0 La taille étendue de vec est = 6 vec [0] la valeur est = 1 vec [1La valeur de ] est = 2 vec [2La valeur de ] est = 3 vec [3La valeur de ] est = 4 vec [4La valeur de ] est = 5 vec [5La valeur de ] est = 6 La valeur de v est = 1 La valeur de v est = 2 La valeur de v est = 3 La valeur de v est = 4 La valeur de v est = 5 La valeur de v est = 6
Sur quelques points à noter concernant les différentes fonctions utilisées dans l'exemple ci-dessus :
Le membre de la fonction push_back() insère une valeur à la fin du vecteur et agrandit le vecteur si nécessaire.
La fonction size() affiche la taille du vecteur.
La fonction begin() retourne un itérateur pointant sur le début du vecteur.
La fonction end() retourne un itérateur pointant sur la fin du vecteur.