从最开始接触标准模板库,到现在还是仅了解其冰山一角,越学越发现标准模板库的异常强大。
【1】STL组成
主要组成:容器、迭代器、算法
(1)容器
1)连续性容器(内存上是连续的)
vector
vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的.
用法参考文献:
(1)C++ vector用法(详解!!函数,实现):https://blog.csdn.net/msdnwolaile/article/details/52708144
(2)C++ 中vector的使用方法:https://blog.csdn.net/duan19920101/article/details/50617190
(3)C++中vector容器的基本用法总结:https://blog.csdn.net/ws_20100/article/details/50829327
list
list是C++标准模版库(STL,Standard Template Library)中的部分内容。实际上,list容器就是一个双向链表,可以高效地进行插入删除元素。
用法参考文献:
(1)C++ List的用法(整理):https://blog.csdn.net/lskyne/article/details/10418823
(2)C++学习:list容器详解(一):https://blog.csdn.net/mazidao2008/article/details/4802617
(3)C++ STL list的初始化、添加、遍历、插入、删除、查找、排序、释放:https://blog.csdn.net/zhouzhenhe2008/article/details/77428743
deque
容器deque和vector非常相似,操作函数基本一致。它采用动态数组来管理元素,提供随机存取,可以在头尾两端进行快速安插和删除元素操作。特别要注意,除了头尾两端,在任何地方安插与删除元素,都将导致指向deque元素的任何pointers references iterators 失效。
参考文献
(1)STL之三:deque用法详解:https://blog.csdn.net/longshengguoji/article/details/8519812
(2)【C++ STL学习之三】容器deque深入学习:https://blog.csdn.net/xiajun07061225/article/details/7442816
2)非连续性容器(内存上非连续 分开的)
map
map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处。
参考文献
(1)C++中map容器的说明和使用技巧:https://www.cnblogs.com/anywei/archive/2011/10/27/2226830.html
(2)C/C++——map的基本操作总结:https://blog.csdn.net/google19890102/article/details/51720305
(3)C++ map用法总结(整理):https://blog.csdn.net/sevenjoin/article/details/81943864
set
set是STL中一种标准关联容器。它底层使用平衡的搜索树——红黑树实现,插入删除操作时仅仅需要指针操作节点即可完成,不涉及到内存移动和拷贝,所以效率比较高。set,顾名思义是“集合”的意思,在set中元素都是唯一的,而且默认情况下会对元素自动进行升序排列,支持集合的交(set_intersection),差(set_difference) 并(set_union),对称差(set_symmetric_difference) 等一些集合上的操作,如果需要集合中的元素允许重复那么可以使用multiset。
参考文献
(1)C++ STL set容器常用用法:https://blog.csdn.net/cerberux/article/details/51774121
(2)STL中的set容器的一点总结:https://www.cnblogs.com/BeyondAnyTime/archive/2012/08/13/2636375.html
3)容器适配器
栈 :
队列 :
优先级队列:
【2】STL算法
(1)STL algorithm标准库中的各种函数:http://blog.sina.com.cn/s/blog_6d79d83a0100wcdm.html