STL
参考链接:基础篇: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)。
算法分为质变算法和非质变算法。
质变算法:是指运算过程中会更改区间内的元素内容,例如拷贝,替代,删除等等。
非质变算法:是指运算过程中不会更改区间内的元素内容,例如查找、计数、遍历、寻找极值等。
迭代器:容器和算法之间的粘合剂,使用类似指针
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Caterpillar's blog!
评论
GitalkDisqus