参考链接:基础篇:STL容器和算法 - 知乎 (zhihu.com)

1.STL基本概念

⚪STL(Standard Template Library,标准模板库)

⚪STL从广义上分为:容器(container)算法(algorithm)迭代器(iterator)

⚪容器和算法之间通过迭代器进行无缝衔接

⚪STL几乎所有的代码都采用了模板类或者函数模板

2.STL六大组件

1.容器:各种数据结构,如vector,list,deque,set,map等,用来存放数据。

2.算法:各种常用算法。如sort、find、copy、for_each等。

3.迭代器:扮演了容器和算法之间的粘合剂

4.仿函数:行为类似函数,可以作 为算法的某种策略。

5.适配器:一种用来修饰容器或者仿函数或者迭代器接口的东西

6.空间适配器:负责空间的配置与管理

3.STL中容器、算法、迭代器

STL容器就是将运用最广泛的一些数据结构实现出来。容器用来管理某类对象。常用的数据结构:数组(array) , 链表(list), tree(树),栈(stack), 队列(queue), 集合(set),映射表(map), 根据数据在容器中的排列特性,这些数据分为序列式容器和关联式容器两种。

1) Sequence containers

序列式容器(Sequence containers),其中每个元素均有固定位置—取决于插入时机和地点,和元素值无关。如果你以追加方式对一个群集插入六个元素,它们的排列次序将和插入次序一致。STL提供了三个序列式容器:向量(vector)、双端队列(deque)、列表(list),此外也可以把 string 和 array 当做一种序列式容器。

2)Associative containers

关联式容器(Associative containers),元素位置取决于特定的排序准则以及元素值,和插入次序无关。如果你将六个元素置入这样的群集中,它们的位置取决于元素值,和插入次序无关。STL提供了四个关联式容器:集合(set)、多重集合(multiset)、映射(map)和多重映射(multimap)。

算法分为质变算法和非质变算法。

质变算法:是指运算过程中会更改区间内的元素内容,例如拷贝,替代,删除等等。

非质变算法:是指运算过程中不会更改区间内的元素内容,例如查找、计数、遍历、寻找极值等。

迭代器:容器和算法之间的粘合剂,使用类似指针