码迷,mamicode.com
首页 > 其他好文 > 详细

STL

时间:2014-05-26 07:10:59      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:style   c   ext   a   color   width   

有序容器:

vector[连续内存]

  拥有一段连续的地址空间,首地址不变,按顺序存放,拥有高效的随机存储和访问,毕竟有迭代器作为序号。

  从尾部插入和删除很快,其他地方插入和删除操作的时间复杂度就高喽,需要大范围内存的复制粘贴,效率低下,就像数组一样.有空间预留的特点,操作起来消耗内存空间。capacity

  所以,vector适用于:高效的随机存储、访问,低效的数据插入删除等操作。其它的操作的效率都谈不上,原因就在于当内存不够用的时候要执行重新分配内存,拷贝对象到新存储区,销毁old对象,释放内存等操 作,如果对象很多的话,这种操作代价是相当高的。为了减少这种代价,使用vector最理想的情况就是事先知道所要装入的对象数目,用成员函式 reserve( )预定下来;

   

deque[跳跃的连续内存]

  拥有几段连续的内存空间,随机存储效率不错,介于两者之间。

  从尾部插入和删除效率不错,另外头部可以添加和删除,也就是两端插入效率不错。介于两者之间

  

list[随机内存]

  通过地址来访问,在内存中的位置不是连续的。无法高效的随机访问,只能快速地访问开头和结尾部分的数据,中间就需要遍历了。

  任何地方插入、删除操作效率较高,通过指针。

 

无序容器:

map

  1:1的关系。关联容器

set

  数学里面的集合,不过set的集合中不包含重复的元素,这是和vector的第一个区别,第二个区别是set内部用平衡二叉树实现,便于元素查找,而vector是使用连续内存存储,便于随机存取。

STL,布布扣,bubuko.com

STL

标签:style   c   ext   a   color   width   

原文地址:http://www.cnblogs.com/Mr-Dog/p/3747763.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!