STL六大部件:![](https://i-blog.csdnimg.cn/blog_migrate/bdb1fd025e4fb1a183e5419c89355d39.png)
算法像是一种操作,操作的内容则在容器中所包含,通常算法通过迭代器对容器进行操作;迭代器类似于指针,是一个泛化的指针,可以指向容器中的元素;分配器是用来给容器中的元素分配内存空间等,适配器就像是一个变压器,使的各部件适配。(个人理解,若有误请指出)
代码示例:
关于容器的分类:
容器分为三大类:
1.sequence
array:固定长度
vector:前闭后开、end指向最后一个元素后一个位置、vector每次扩展内存是两倍扩展(eg:第一次分配空间1,第二次空间扩展为2,第三次扩展为4....)
deque:两端均可插入删除(stack、queue是两种受限的deque)
list:双端链式存储,空间动态扩展
forward-list:单链存储
2.associative
set/multiset:有自己的find函数,红黑树存储方法,set不支持存放相同内容元素,multiset支持存放相同内容元素。
map/multimap:以<key,value>的pair形式存放数据,有自己的find函数,红黑树存储方式,multimap中不支持使用[i]形式的插入,在map中不允许存在相同的key值存在。
3.unordered
unordered set/multiset unordered map/multimap 存储形式如下,以hash table的形式存储。
补充:deque的内存分配形式