在STL中,哪個更好的Map或Vector。假設我有一組需要刪除的記錄,那麼我應該選擇什麼 - std :: map或std :: vector。爲什麼?STL矢量和地圖哪一個更喜歡刪除記錄集合
-1
A
回答
0
如果您需要以不可預測的順序添加和刪除多個記錄,則映射或集合可能會更好。這是因爲刪除一個條目只需要與地圖或集合的大小成比例的對數時間,而從矢量中刪除條目需要的時間與矢量的大小成比例。 unordered_map/unordered_set可能會更好 - 刪除記錄的代價通常是不變的。
有關背景:
- 向量是一個數組,所以如果你刪除單個元素的所有其他元素需要移動一個到左邊。
- 地圖和一套是紅黑樹(http://en.wikipedia.org/wiki/Red-black_tree)
- unordered_map和unordered_set是哈希表(http://en.wikipedia.org/wiki/Hash_table)
2
你或許應該考慮使用的一組,而不是地圖,如果你沒有像什麼鍵值對和它的正確值。我假設這是因爲你正在談論使用矢量
相關問題
- 1. 抽象的地圖和矢量的STL
- 2. 刪除元素:但更喜歡哪個容器
- 3. FOSFacebookBundle VS HWIOAuthBundle - 你更喜歡哪一個?
- 4. 矢量或地圖,哪一個使用?
- 5. ReentrantLock vs stampedlock和有什麼不一樣?哪一個更喜歡?
- 6. SQL聯盟更喜歡從一個表的記錄?
- 7. STL地圖不會刪除
- 8. 「喜歡」和「=」哪一個更approprite爲什麼在TSQL
- 9. 你更喜歡哪一個? SVG,HTML5還是regen'd-PNG的圖表和圖表?
- 10. 清除矢量或定義一個新矢量,哪一個更快
- 11. 更新和刪除記錄
- 12. 結合地圖和矢量和列表
- 13. 喜歡和不喜歡在同一列
- 14. 你更喜歡哪個ASP.NET MVC控件工具集?
- 15. 空合併運算符 - 您更喜歡以下哪一項?
- 16. ORMLite刪除記錄的那場是在另一個集合
- 17. cpp有沒有理由更喜歡矢量<class_type*>到矢量<void*>?
- 18. SQL不喜歡和喜歡
- 19. CEditBox或CListBox哪一個更適合大量記錄數據
- 20. 如何遍歷STL集合並選擇性地刪除元素?
- 21. 爲什麼有人更喜歡矢量數組?
- 22. 從矢量和QVBoxLayout刪除
- 23. 存儲Facebook喜歡本地 - 喜歡性能問題的數量
- 24. Mysql喜歡或喜歡的地方
- 25. Mercurial刪除變更集,合併歷史記錄
- 26. 當更新子集合時,NHibernate不刪除無用的記錄
- 27. 哪個界面更喜歡哪個界面?
- 28. 什麼庫包含地圖STL集合?
- 29. 爲什麼批量刪除記錄比批量刪除更好?
- 30. 標準矢量和增強矢量的push_back:哪個更快?
請詳細說明你正試圖解決的問題。現在它沒有任何意義。 –