C++ STL 教程
希望您已经了解我们之前讨论过的 C++ 模板的概念。C++ STL(标准模板库)是一组功能强大的 C++ 模板类,提供通用类和函数以及实现许多流行且常用的算法和数据结构(如向量、列表、队列和堆栈)的模板。
C++ 标准模板库的核心是以下三个结构良好的组件 -
| 先生编号 | 组件及描述 |
|---|---|
| 1 | 集装箱 容器用于管理某种类型的对象的集合。有几种不同类型的容器,如双端队列、列表、向量、映射等。 |
| 2 | 算法 算法作用于容器。它们提供了对容器内容执行初始化、排序、搜索和转换的方法。 |
| 3 | 迭代器 迭代器用于逐步遍历对象集合的元素。这些集合可以是容器或容器的子集。 |
我们将在下一章讨论 C++ 标准库时讨论所有三个 C++ STL 组件。现在,请记住,所有三个组件都有一组丰富的预定义函数,可以帮助我们以非常简单的方式完成复杂的任务。
让我们用下面的程序来演示向量容器(C++ 标准模板),它类似于数组,但它会在增长时自动处理自己的存储需求 -
#include <iostream>
#include <vector>
using namespace std;
int main() {
// create a vector to store int
vector<int> vec;
int i;
// display the original size of vec
cout << "vector size = " << vec.size() << endl;
// push 5 values into the vector
for(i = 0; i < 5; i++) {
vec.push_back(i);
}
// display extended size of vec
cout << "extended vector size = " << vec.size() << endl;
// access 5 values from the vector
for(i = 0; i < 5; i++) {
cout << "value of vec [" << i << "] = " << vec[i] << endl;
}
// use iterator to access the values
vector<int>::iterator v = vec.begin();
while( v != vec.end()) {
cout << "value of v = " << *v << endl;
v++;
}
return 0;
}
当上面的代码被编译并执行时,它会产生以下结果 -
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
以下是与我们在上面的示例中使用的各种函数相关的以下几点:
Push_back() 成员函数在向量的末尾插入值,根据需要扩展其大小。
size( ) 函数显示向量的大小。
函数 begin() 返回一个指向向量开头的迭代器。
函数 end( ) 返回一个指向向量末尾的迭代器。