English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
STL é a abreviação de “Standard Template Library”, traduzida para chinês como “Biblioteca de Template Padrão”. STL é uma biblioteca C++ Parte da biblioteca padrão, não é necessário instalar separadamente.
Nos capítulos anteriores, já estudamos C++ O conceito de template. C++ STL (Biblioteca de Template Padrão) é um conjunto de bibliotecas C++ Classe de modelo, que oferece classes e funções genéricas, que podem implementar várias algoritmos e estruturas de dados populares e comuns, como vetores, listas encadeadas, filas e pilhas.
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; }
Quando o código acima for compilado e executado, ele produzirá o seguinte resultado:
O tamanho original do vec é = 0 O tamanho expandido do vec é = 6 vec [0] o valor é = 1 vec [1O valor de ] é = 2 vec [2O valor de ] é = 3 vec [3O valor de ] é = 4 vec [4O valor de ] é = 5 vec [5O valor de ] é = 6 O valor de v é = 1 O valor de v é = 2 O valor de v é = 3 O valor de v é = 4 O valor de v é = 5 O valor de v é = 6
Sobre os vários tipos de funções usados no exemplo acima, há alguns pontos a considerar:
O membro da função push_back( ) insere um valor no final do vetor, se necessário, expande o tamanho do vetor.
A função size( ) mostra o tamanho do vetor.
A função begin( ) retorna um iterador apontando para o início do vetor.
A função end( ) retorna um iterador apontando para o final do vetor.