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容器的插入、删除、遍
- 下一篇: C++拾取——使用stl标准库生成等差、