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( ) 返回一个指向向量末尾的迭代器。