STL Contianers容器精辟总结

STLContianers容器精辟总结

一、序列容器(Sequence containers)

1、  Vector :一种序列容器,实现为动态数组,元素保存在连续的存储位置,支持迭代器和索引访问。与数组不同的是,可以自动分配存储空间,容易改变容器大小。当需要频繁从序列尾部增加或者删除数据时,可以表现出高效的性能。size记录了当前容器大小,capacity记录了当前已分配的最大空间。

2、  List:一种序列容器,实现为双向链表。与其他容器如vector和deques相比,list在容器内部插入、删除元素操作中性能更好。主要缺点是不支持元素直接按索引访问,需要迭代遍历。

3、  Deque:全称为 double-ended queue,即双端队列,支持元素按照索引访问,双向迭代遍历,元素可以被高效从前端或者后端增加和删除。与vector相比,增加了从前端增删元素的操作。缺点是不保证所有元素分布在连续的存储空间。尽管vector和deque提供的接口相似,但是工作原理不同,前者是动态分配连续空间的数组,后者的元素可以分块存储,有专门的类来保存信息,并提供统一访问。由于避免了反复重新分配空间,deque在处理大的序列时更加高效。

 二、容器适配器(Container adaptors)

1、  Queue:一种容器适配器,实现为FIFO队列,注意后端push元素,前端pop元素。

2、  Priority queues:优先权队列,容器适配器,与数据结构”堆”相似,第一个元素总是最大元素。从后端pop和push元素。

3、  Stack:LIFO栈,容器适配器,从后端即栈顶pop和push元素

 三、 关联容器(Associativecontainers)

1、  Bitset :一种保存bit即0或者1,True或者False的容器。与数组相似,但是每个元素只分配一个位保存,只有C++中char空间的八分之一。支持元素直接按索引访问。

2、  Set:关联容器,存储有序(一般为升序)且唯一(与mutiliset对比)的元素,实现为二叉搜索树,元素的value就是key(与map对比)。unordered_set实现了无序set。

3、  Multiset:与set性质类似,只是允许出现重复元素。

4、  Map:关联容器,保存<Key,Value>对,同样保持有序,一般为升序,支持按照key来访问元素,key不允许重复。unordered_map实现了无序map。

5、  Multimap:与map性质类似,但是允许不同元素的key相同。

 四、各容器成员函数一览图


参考资料  http://www.cplusplus.com/reference/stl/



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值