• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

狗少

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

STL

有序容器:

vector[连续内存]

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

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

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

   

deque[跳跃的连续内存]

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

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

  

list[随机内存]

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

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

 

无序容器:

map

  1:1的关系。关联容器

set

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

posted on 2014-05-23 15:03  狗少  阅读(151)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3