相关环境和说明在《C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(ubuntu g++)——插入》已给出。本文将分析从头部、中间和尾部对各个容器进行删除的性能。(转载请指明出于breaksoftware的csdn博客)

删除

头部删除

元素个数>15000

erase_begin_16384_highest

vector容器性能最差。由于它和其他容器性能差距比较大,我们将其从图中去除。

erase_begin_16384

除了set表现不好之外,其他容器都差不多。其中表现最好的是list和forward_list。

元素个数<4096

erase_begin_4096

由于vector持续的表现的最差,我就没在上图中将其列出。

set在这个场景下表现也很差。deque在元素超过2500左右时,“迎头赶上”,成为第三差的容器。

元素个数<1024

erase_begin_1024标题

可以看到deque的性能在此时是最好的,明显要优于list和forward_list。

元素个数<256

erase_begin_256

对于小容器,deque、list和forward_list的表现最好。

对比结果:

vector表现最差。

容器元素比较多时,list和forward_list性能最好。

元素少于2500左右时,deque的性能最好。

中间删除

元素个数>15000

erase_mid_16256_highest

vector的性能最差。

erase_mid_16256

除了vector,表现最差的是map系列的三个容器:multimap、map和unordered_multimap。

表现最好的是list和forward_list。

由于vector表现的太差,之后中间删除的图例都不再列出它。

元素个数<4096

erase_mid_4096

deque在元素个数达到1800左右执行了高耗时操作。在此之前它要优于list。

元素个数<256

erase_mid_256

对于小容器,效率最好的依次是:forward_list、deque和list。

对比结果:

vector性能最差。

list和forward_list在各种容器大小时,表现都很好。

deque在元素个数少于1800左右时,表现仅次于forward_list。

尾部删除

元素个数>15000

erase_end_16384_highest

之前各个场景下表现优异的forward_list此时表现的极差。由于差异非常大,之后各个容器大小图例中都将不包含它。

erase_end_16384

vector表现最优,其次是deque和list。非关联容器的表现都由于关联容器。

元素个数<256

erase_end_256

大容器的表现在小容器上也有着相似的体现。

结果对比:

vector的效率最优。其次是deque和list。

forward_list效率最差。

结论:

vector在头部和中间删除时,表现极差;在尾部删除时,表现优异。

forward_list在尾部删除时,表现极差;头部和中间删除时,表现优异。

list在各个场景下表现均较为优异。

deque在元素少于2500左右时,效率比较优秀。元素超过这个阈值后,头部删除效率较差,中间和尾部删除仍然不错。

文中图例可从以下地址获取:https://github.com/f304646673/stl_perf/tree/master/linux

C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(ubuntu g++)——删除相关推荐

  1. C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(Windows VirtualStudio)——遍历和删除

    相关环境和说明在<C++拾趣--STL容器的插入.删除.遍历和查找操作性能对比(Windows VirtualStudio)--插入>已给出.本文将分析各个容器中遍历和查找的性能.(转载请 ...

  2. C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(Windows VirtualStudio)——删除

    相关环境和说明在<C++拾趣--STL容器的插入.删除.遍历和查找操作性能对比(Windows VirtualStudio)--插入>已给出.本文将分析从头部.中间和尾部对各个容器进行删除 ...

  3. C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(ubuntu g++)——遍历和查找

    相关环境和说明在<C++拾趣--STL容器的插入.删除.遍历和查找操作性能对比(ubuntu g++)--插入>已给出.本文将分析各个容器中遍历和查找的性能.(转载请指明出于breakso ...

  4. C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(Windows VirtualStudio)——插入

    操作系统是Windows10 64bit,编译器是 Microsoft Virtual Studio Community 10.编译产出是64位测试程序.(转载请指明出于breaksoftware的c ...

  5. C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(ubuntu g++)——插入

    操作系统是ubuntu 18.04.1 server amd64,gcc是 7.3.0.编译产出是64位测试程序.(转载请指明出于breaksoftware的csdn博客) 因为加入测量,就会导致误差 ...

  6. C++中STL容器利用迭代器删除元素小结

    C++中STL容器利用迭代器删除元素小结 在STL容器中删除元素,容易导致迭代器失效,故应该清楚明白其用法,现在总结一下. 转载自:https://blog.csdn.net/yf_li123/art ...

  7. C++ STL容器元素正确删除

    一.容器与迭代器 1.1 STL容器 容器是用来管理一大群元素的,为了适应不同需要,STL提供了不同的容器. 在C++中,容器被定义为:在数据存储上,有一种对象类型,它可以持有其他对象或指向其他对象的 ...

  8. C++STL容器,你真的会用了吗?——插入、删除、遍历和查找操作性能对比——插入(精简易懂版,句句干货)

    文中将测试vector.list.forward_list.deque.set(multiset).unordered_set(unordered_multiset).map(multimap)和un ...

  9. C++STL容器,你真的会用了吗?——插入、删除、遍历和查找操作性能对比——删除(精简易懂版,句句干货)

    删除 头部删除 vector性能是最差的 ,set和map的性能次之. deque和forward_list性能是最优的.(差距不是十分明显) 中间删除 vector的性能最差, 效率最好的是list ...

最新文章

  1. 洛阳综合保税区正式获国务院批复同意设立
  2. linux wifi 报错 siocsifflags: operation not possible due to rf-kill
  3. Python爬虫入门(8):Beautiful Soup的用法
  4. MyEclipse部署Tomcat服务器
  5. Socket网络编程--小小网盘程序(4)
  6. 模块-from import导入所有工具
  7. Java 集合Collection图解
  8. HTML5 Audio(音频)
  9. 详解 Qt 串口通信程序全程图文 (5)
  10. 推荐一个简洁优雅的博客系统,farbox
  11. Windows下载FFmpeg最新版(踩了一上午的坑终于成功)
  12. 使用Spring MVC实现数据绑定
  13. C小项目 简易英汉词典
  14. 泊松分布,指数分布与排队论模型
  15. WINDOWS安装.cab文件
  16. 关于sp和unity近似的PBR的一篇国外文章
  17. 累加器实验总结计算机组成,计算机组成原理累加器实验报告
  18. 谷歌索引量查询,批量查询网站在谷歌RR权重值
  19. 模式识别c语言isodata算法,《模式识别-黄庆明》第二章(ISODATA算法实例).doc
  20. TIPTOP ERP 如何客制单据别自动编码的应用

热门文章

  1. SVD与PCA的区别
  2. 判断图像质量的好坏(opencv)
  3. POJ - 2763 Housewife Wind LCA+dfs序+线段树
  4. HDU - 2586 How far away LCA+tanjar离线算法
  5. C语言实现RC4序列密码
  6. Node.js复制/删除服务器端文件到指定目录文件夹下,并且预判是否存在该目录,如果没有,则递归创建该文件夹目录
  7. Blender 2.9中的真实感三维产品全流程制作学习教程
  8. POJ1149-PIGS
  9. JavaScript闭包函数箭头函数调用与执行
  10. [Manthan, Codefest 18][Codeforces 1037E. Trips]