English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ Tutoriales básicos

C++ Control de flujo

C++ Función

C++ Arreglo & cadena

C++ Estructura de datos

C++ Clase & objeto

C++ Punteros

C++ Herencia

C++ Tutorial de STL

C++ Manual de Referencia

C++ Tutorial de STL

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.