Cplusplus 简明教程

C++ STL Tutorial

希望你已经理解了我们之前讨论过的 C 模板概念。C STL(标准模板库) 是一组功能强大的 C++ 模板类,以包含模板的通用类和函数来实现许多流行且常用的算法和数据结构(如向量、列表、队列和栈)。

C++ 标准模板库的核心包含以下三个结构完善的组件 −

Sr.No

Component & Description

1

Containers 容器用于管理某种特定类型的对象集合。有几种不同的容器类型,如 deque、list、vector、map 等。

2

Algorithms 算法操作容器。它们提供了执行容器内容的初始化、排序、搜索和转换的方法。

3

Iterators 迭代器用于遍历对象集合的元素。这些集合可能是容器或容器的子集。

我们将在下一章讨论 C STL 的所有三个组件,同时讨论 C 标准库。现在,请记住所有这三个组件都有一组丰富的预定义函数,这些函数可以帮助我们以非常简单的方式完成复杂的任务。

让我们看一个用向量容器(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

以下是关于我们在上例中使用的各种函数的一些注意事项 −

  1. push_back( ) 成员函数在向量尾部插入值,根据需要扩展其大小。

  2. size( ) 函数显示向量的尺寸。

  3. begin( ) 函数返回一个指向向量开头的迭代器。

  4. end( ) 函数返回一个指向向量结尾的迭代器。