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