C++ STL 简介
什么是STL
STL全程为standard template library 即标准模板库,是由惠普实验室开发的一系列软件的统称。
STL可分为容器、迭代器、空间配置器、配接器、算法和伪函数六个部分。
下面来简单的介绍下比较常用的容器,迭代器和算法部分。
容器
STL中提供了很多的容器,即数据存储结构。这些存储结构各有优缺点,STL在底层实现中做了很多的优化,最终封装成了12个模板,在这先做一个简单的介绍,后续我们再详细的介绍各个容器的用处与用法。
容器名称 | 容器介绍 | 头文件 |
向量(vector) | 连续存储的元素(也有地方称作可变长数组) | vector |
列表(list) | 由结点组成的双向链表,每个结点包含着一个元素 | list |
双端队列(deque) | 连续存储的指向不同元素的指针所组成的数组 | deque |
栈(stack) | 后进先出的队列 | stack |
队列(queue) | 先进先出的队列 | queue |
优先队列(priority_queue) | 元素的次序是由作用于所存储的值对上的某种谓词决定的一种队列 | queue |
集合(set) | 由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素队的谓词排列,没有两个不同的元素值 | set |
多重集合(multiset) | 允许两个元素值相等的元素集合 | set |
映射(map) | (由{键:值}对组成的集合,以某种作用于键对上的谓词排列 | map |
多重映射(multimap) | 允许有相同键值对的映射 | map |
对(pair) | 和map相似,但只有一对键值 | utility |
智能指针(auto_pyr) | 将一个用new开辟内存的指针赋给auto_ptr,会自动回收空间 | memory |
迭代器
迭代器在STL中的作用是将算法和容器联系起来,起着一种粘合剂的作用。几乎STL提供的所有算法都是通过迭代器存取元素序列进行工作的,每一个容器都定义了其本身所专有的迭代器,用以存取容器中的元素.
例如:
这段代码中的it就是set的一个迭代器,相当于指针的作用。STL算法中的参数以及返回值多数为迭代器。
算法
STL中封装了大量的常用算法,这些算法都是经过优化之后的算法。例如sort()排序算法,swap()交换,next_permutation()全排列等等。STL中提供了大约100个实现算法的模板函数。其中常用到的功能范围涉及到比较、交换、查找、遍历操作、复制、修改、移出、反转、排序、合并等等。后续我们再将常用的模板函数进行详细的介绍