English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
STL es la abreviatura de "Standard Template Library", que se traduce como "Biblioteca de Plantillas Estándar" en chino. STL es una biblioteca C++ Una parte de la biblioteca estándar, no es necesario instalarla por separado.
En los capítulos anteriores, ya hemos aprendido C++ El concepto de plantilla. C++ STL (Biblioteca de Plantillas Estándar) es un conjunto de bibliotecas C++ La clase de plantilla, que proporciona clases y funciones genéricas, que pueden implementar múltiples algoritmos y estructuras de datos populares y comunes, como vectores, listas enlazadas, colas y pilas.
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; }
Cuando el código anterior se compila y ejecuta, producirá los siguientes resultados:
El tamaño original de vec = 0 El tamaño extendido de vec = 6 El valor de vec[0] = 1 vec [1El valor de ] = 2 vec [2El valor de ] = 3 vec [3El valor de ] = 4 vec [4El valor de ] = 5 vec [5El valor de ] = 6 El valor de v = 1 El valor de v = 2 El valor de v = 3 El valor de v = 4 El valor de v = 5 El valor de v = 6
Hay algunos puntos a tener en cuenta sobre las diversas funciones utilizadas en el ejemplo anterior:
El miembro de la función push_back() inserta un valor al final del vector, extendiendo el tamaño del vector si es necesario.
La función size() muestra el tamaño del vector.
La función begin() devuelve un iterador apuntando al principio del vector.
La función end() devuelve un iterador apuntando al final del vector.