C++拾趣——STL容器的插入删除遍历和查找操作性能对比(Windows VirtualStudio)——遍历和删除
Posted breaksoftware
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++拾趣——STL容器的插入删除遍历和查找操作性能对比(Windows VirtualStudio)——遍历和删除相关的知识,希望对你有一定的参考价值。
相关环境和说明在《C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(Windows VirtualStudio)——插入》已给出。本文将分析各个容器中遍历和查找的性能。(转载请指明出于breaksoftware的csdn博客)
遍历
从前往后
性能最差的是map、multimap、set和multiset这两簇。
其他容器性能差距不大。
非关联容器中,list的性能最差。
从后往前
支持从后向前遍历的容器并不多,只有:vector、deque、list、set、map、multiset和multimap。
元素个数>15000
非关联容器的性能要优于关联容器。
非关联容器之间相比,性能差距不大。
在12500个元素之前,vector的效率要比list和deque低,但是之后vector是最优的。
元素个数<4096
vector在初期会有高耗时操作,之后性能优秀(通过斜率)。
结论:
除了map、multimap、set和multiset,其他容器的遍历性能都差不了太多。
查找
因为非关联容器的查找只能通过遍历,其效率和关联容器的查找没法比。所以我们只比较关联容器。
元素个数>15000
set类要优于对应的map类容器。即set优于map;multiset优于multimap;unordered_set优于unordered_map;unordered_multiset优于unordered_multimap。
multi类要优于对应的非multi类容器。即multimap优于map;multiset优于set;unordered_multimap优于unordered_map;unordered_multiset优于unordered_set。
无序关联容器要优于有序关联容器。
文中图例可从如下地址获取:https://github.com/f304646673/stl_perf/tree/master/windows
以上是关于C++拾趣——STL容器的插入删除遍历和查找操作性能对比(Windows VirtualStudio)——遍历和删除的主要内容,如果未能解决你的问题,请参考以下文章
C++拾趣——STL容器的插入删除遍历和查找操作性能对比(Windows VirtualStudio)——删除
C++拾趣——STL容器的插入删除遍历和查找操作性能对比(ubuntu g++)——删除
C++拾趣——STL容器的插入删除遍历和查找操作性能对比(Windows VirtualStudio)——插入