STL教程(一): 标准模板库--STL概述

STL是C++通用库,主要由迭代器、算法、容器、仿函数、内存分配器和配接器组成。
STL主要的主要功能都被声明在13个头文件中,它们分别是:< algorithm >、< deque >、< functional >、< iterator>、< vector>、< list>、< map>、< memory>、< numeric>、< queue>、< set>、< stack>、< utility>。

一、容器

STL提供了很多类型的容器,包括:

  • vertor< T >: 一种支持动态扩展的数组容器
  • list < T>:      双向链表容器
  • queue< T>:  队列容器
  • statck< T>:  栈容器
  • deque< T>: 双端队列容器
  • priority_queue< T>: 优先级队列容器
  • set< T>:  集合容器
  • multiset< T>: 一种容许存在重复元素的集合容器
  • map< key, val>:一种映射关联容器
  • multimap<key,val>:一种允许存在重复key值的映射关联容器

另外,若要将某对象放入上述容器中进行管理,则其要必须满足以下三个条件:

  1. 元素必须是可复制的
  2. 元素必须是可指派(修改)的
  3. 元素内存必须是可释放的,即析构函数不能为private

二、算法

除了容器外,STL还为我们提供了大量非常简单好用的算法,功能包括但不限于查询、排序、赋值、修改、数值运算等,这些算法都是以模板的形式在命名空间std内实现的。借助迭代器,STL的算法函数可以用于任意容器。

三、迭代器

迭代器大概可以分为五种类型,分别是:

  • 输入迭代器
  • 输出迭代器
  • 前向迭代器
  • 双向迭代器
  • 随机访问迭代器(功能最为强大)

迭代器的作用主要是:用来遍历容器,使算法能够不依赖容器而完成特定任务,迭代器的出现使算法和容器分离成为可能。

四、仿函数

  仿函数(functor),就是使一个类的使用看上去象一个函数:其实其就是在类中实现一个operator(),使这个类有了类似函数的行为,就是一个仿函数类了。仿函数可以理解为函数的一般形式,仿函数通过运算符定义显著提高了代码运行效率。

5、内存配置器及配接器

最常用的配接器有istream_iterator,提供了函数copy的接口。

另外STL还提供了3种容器配接器:stack< Container>,queue< Container>、deque< Container>。
 

上一篇:mongoose - 让node.js高效操作mongodb


下一篇:C++ STL库史上最详细的教程