list - 擅长插入删除的链表

链表对于数组来说就是相反的存在。

数组本身是没有动态增长能力的(程序中也必须又一次开辟内存来实现),

而链表强悍的就是动态增长和删除的能力。

但对于数组强悍的随机訪问能力来说的话,链表却非常弱。

list - 是一个双向链表的实现。

为了提供双向遍历的能力,list要比一般的数据单元多出两个指向前后的指针。

这也是没办法的,毕竟如今的PC内存结构就是一个大数组,链表要在不同的环境中实现自己的功能就须要花很多其它空间。

list提供了push_back,push_front,pop_back,pop_front四个方法来方便操作list的两端数据的添加和删除,只是少了vector的at和[]运算符的随机訪问数据的方法随机訪问数据的方法。

并非不能实现。而是list的设计者并不想让list去做那些事情。由于他们会做得很差劲。对于list来说。清除容器内全部的元素是一件苦力活,由于全部数据单元的内存都不连续,list仅仅有一个一个遍历来删除。

相关博文

详见:C++
stack queue vector 中 易混淆的经常用法 浅析

详址:http://blog.csdn.net/u013630349/article/details/46860117

Level 1 - 只作为Map使用:採用静态数组

Level 2 - 保存定长数据,使用时也是所有遍历:採用动态数组(长度一開始就固定的话静态数组也行)

Level 3 - 保存不定长数组。须要动态添加的能力。側重于寻找数据的速度:採用vector

Level 3 - 保存不定长数组,须要动态添加的能力。側重于添加删除数据的速度:採用list

Level 4 - 对数据有复杂操作。即须要前后增删数据的能力,又要良好的数据訪问速度:採用deque

Level 5 - 对数据中间的增删操作比較多:採用list。建议在排序的基础上,批量进行增删能够对执行效率提供最大的保证

Level 6 - 上述中找不到适合的:组合STL容器或者自己建立特殊的数据结构来实现

有黑必有白,世界万物都是成对出现的。

性能总结与使用建议

最新文章

  1. Oracle 性能优化
  2. Java深度历险(五)——Java泛型
  3. 求方程式ax^2+bx+c=0的根。
  4. PLSQL_闪回操作1_Flashback Query
  5. iOS --- 取整数
  6. PL/SQL拼接和使用绑定变量
  7. VS2010安装Visual Assist
  8. Python爬虫实战(3):安居客房产经纪人信息采集
  9. Spring MVC 表单验证
  10. Hdoj 2109.Fighting for HDU 题解
  11. VS2015 新建 ASP.NET Web应用程序, 此模板尝试加载程序集‘Microsoft.VisualStudio.Web.Project’, 解决方案
  12. android HttpClient将数据提交到服务器
  13. 在Windows下解决git ERROR: Permission to XXX.git denied to user
  14. pycharm 利用virtualenv为每个项目配置venv
  15. mysql 实时统计脚本 QPS,TPS和线程连接数等
  16. oracle rac 常见安装、管理错误
  17. MySQL的NO_BACKSLASH_ESCAPES
  18. 【TCP/IP详解 卷一:协议】第六章:DHCP 和自动配置
  19. 第七周linux学习
  20. 如何生成KeyStore

热门文章

  1. nyoj--252--01串(水题)
  2. 写个js动态调整图片宽高 (原创)
  3. ZOJ-3988 2017CCPC-秦皇岛 Prime Set 二分图最大匹配 匈牙利
  4. getElementById和querySelector区别
  5. Vue2.0框架搭建基础操作及目录说明
  6. Firebird Character Sets and Collations
  7. AI:从游戏引擎--到AI
  8. C# 生成Model和DAL
  9. React从安装到实战
  10. SQL数据查询2