C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(ubuntu g++)——删除
相关环境和说明在《C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(ubuntu g++)——插入》已给出。本文将分析从头部、中间和尾部对各个容器进行删除的性能。(转载请指明出于breaksoftware的csdn博客)
删除
头部删除
元素个数>15000
vector容器性能最差。由于它和其他容器性能差距比较大,我们将其从图中去除。
除了set表现不好之外,其他容器都差不多。其中表现最好的是list和forward_list。
元素个数<4096
由于vector持续的表现的最差,我就没在上图中将其列出。
set在这个场景下表现也很差。deque在元素超过2500左右时,“迎头赶上”,成为第三差的容器。
元素个数<1024
可以看到deque的性能在此时是最好的,明显要优于list和forward_list。
元素个数<256
对于小容器,deque、list和forward_list的表现最好。
对比结果:
vector表现最差。
容器元素比较多时,list和forward_list性能最好。
元素少于2500左右时,deque的性能最好。
中间删除
元素个数>15000
vector的性能最差。
除了vector,表现最差的是map系列的三个容器:multimap、map和unordered_multimap。
表现最好的是list和forward_list。
由于vector表现的太差,之后中间删除的图例都不再列出它。
元素个数<4096
deque在元素个数达到1800左右执行了高耗时操作。在此之前它要优于list。
元素个数<256
对于小容器,效率最好的依次是:forward_list、deque和list。
对比结果:
vector性能最差。
list和forward_list在各种容器大小时,表现都很好。
deque在元素个数少于1800左右时,表现仅次于forward_list。
尾部删除
元素个数>15000
之前各个场景下表现优异的forward_list此时表现的极差。由于差异非常大,之后各个容器大小图例中都将不包含它。
vector表现最优,其次是deque和list。非关联容器的表现都由于关联容器。
元素个数<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++)——删除相关推荐
- C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(Windows VirtualStudio)——遍历和删除
相关环境和说明在<C++拾趣--STL容器的插入.删除.遍历和查找操作性能对比(Windows VirtualStudio)--插入>已给出.本文将分析各个容器中遍历和查找的性能.(转载请 ...
- C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(Windows VirtualStudio)——删除
相关环境和说明在<C++拾趣--STL容器的插入.删除.遍历和查找操作性能对比(Windows VirtualStudio)--插入>已给出.本文将分析从头部.中间和尾部对各个容器进行删除 ...
- C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(ubuntu g++)——遍历和查找
相关环境和说明在<C++拾趣--STL容器的插入.删除.遍历和查找操作性能对比(ubuntu g++)--插入>已给出.本文将分析各个容器中遍历和查找的性能.(转载请指明出于breakso ...
- C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(Windows VirtualStudio)——插入
操作系统是Windows10 64bit,编译器是 Microsoft Virtual Studio Community 10.编译产出是64位测试程序.(转载请指明出于breaksoftware的c ...
- C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(ubuntu g++)——插入
操作系统是ubuntu 18.04.1 server amd64,gcc是 7.3.0.编译产出是64位测试程序.(转载请指明出于breaksoftware的csdn博客) 因为加入测量,就会导致误差 ...
- C++中STL容器利用迭代器删除元素小结
C++中STL容器利用迭代器删除元素小结 在STL容器中删除元素,容易导致迭代器失效,故应该清楚明白其用法,现在总结一下. 转载自:https://blog.csdn.net/yf_li123/art ...
- C++ STL容器元素正确删除
一.容器与迭代器 1.1 STL容器 容器是用来管理一大群元素的,为了适应不同需要,STL提供了不同的容器. 在C++中,容器被定义为:在数据存储上,有一种对象类型,它可以持有其他对象或指向其他对象的 ...
- C++STL容器,你真的会用了吗?——插入、删除、遍历和查找操作性能对比——插入(精简易懂版,句句干货)
文中将测试vector.list.forward_list.deque.set(multiset).unordered_set(unordered_multiset).map(multimap)和un ...
- C++STL容器,你真的会用了吗?——插入、删除、遍历和查找操作性能对比——删除(精简易懂版,句句干货)
删除 头部删除 vector性能是最差的 ,set和map的性能次之. deque和forward_list性能是最优的.(差距不是十分明显) 中间删除 vector的性能最差, 效率最好的是list ...
最新文章
- 洛阳综合保税区正式获国务院批复同意设立
- linux wifi 报错 siocsifflags: operation not possible due to rf-kill
- Python爬虫入门(8):Beautiful Soup的用法
- MyEclipse部署Tomcat服务器
- Socket网络编程--小小网盘程序(4)
- 模块-from import导入所有工具
- Java 集合Collection图解
- HTML5 Audio(音频)
- 详解 Qt 串口通信程序全程图文 (5)
- 推荐一个简洁优雅的博客系统,farbox
- Windows下载FFmpeg最新版(踩了一上午的坑终于成功)
- 使用Spring MVC实现数据绑定
- C小项目 简易英汉词典
- 泊松分布,指数分布与排队论模型
- WINDOWS安装.cab文件
- 关于sp和unity近似的PBR的一篇国外文章
- 累加器实验总结计算机组成,计算机组成原理累加器实验报告
- 谷歌索引量查询,批量查询网站在谷歌RR权重值
- 模式识别c语言isodata算法,《模式识别-黄庆明》第二章(ISODATA算法实例).doc
- TIPTOP ERP 如何客制单据别自动编码的应用
热门文章
- SVD与PCA的区别
- 判断图像质量的好坏(opencv)
- POJ - 2763 Housewife Wind LCA+dfs序+线段树
- HDU - 2586 How far away LCA+tanjar离线算法
- C语言实现RC4序列密码
- Node.js复制/删除服务器端文件到指定目录文件夹下,并且预判是否存在该目录,如果没有,则递归创建该文件夹目录
- Blender 2.9中的真实感三维产品全流程制作学习教程
- POJ1149-PIGS
- JavaScript闭包函数箭头函数调用与执行
- [Manthan, Codefest 18][Codeforces 1037E. Trips]