2
A
回答
5
主要區別在於數據如何存儲。
A vector
將數據存儲在其調整大小的內部數組中,並添加更多元素。 unordered_map
內部使用哈希表。
實際上,一個vector
可以讓你在後麪攤銷恆定時間插入(它需要調整大小和複製/移動所有內容),按索引進行恆定時間訪問,以及直到時間的插入和刪除(所有後續元素必須移位)。另外,由於vector
是連續的,因此可以將它傳遞給期望c樣式數組的函數。
unordered_map
通過鍵爲您提供分期恆定時間查找(因爲散列並不完美,碰撞迫使查找遍歷內部鏈表),攤銷常量時間插入和刪除。
參見:http://en.cppreference.com/w/cpp/container/unordered_map 和:http://en.cppreference.com/w/cpp/container/vector
3
不可以,vector
中的索引是連續的,在map
中不是必須的。
另外,vector
中的值保證在連續存儲器中,而不是在map
中。
這兩個意味着兩個大多數操作的複雜性不同。
5
向量是一個數組周圍的容器。
無序映射是圍繞二叉樹的容器。
這意味着它們具有不同的性能特徵。一些例子:
- 訪問由索引的元素是在 矢量/陣列的常數時間的操作,但在二叉樹的對數時間的操作。 都很便宜,但在矢量上更快。
- 增加矢量的容量是昂貴的(線性時間),但是對於二叉樹(對數時間)而言便宜。
相關問題
- 1. 地圖和ImmutableMap之間的區別
- 2. 地圖和字典之間的區別
- 3. 二維矢量和矢量地圖有什麼區別?
- 4. K均值聚類和矢量量化之間的區別?
- 5. 可伸縮矢量圖形(SVG)圖像和jpeg圖像之間的區別?
- 6. 矢量源URL和加載器之間的區別 - openlayers 3
- 7. BeautifulSoup和Scrapy履帶之間的區別?
- 8. **變量和變量[] []之間的區別?
- 9. 編碼和整理之間的區別?
- 10. 谷歌地圖地圖API和Google地圖時區API之間的區別
- 11. 快速地圖和傳統地圖之間的區別
- 12. 兩張地圖之間的區別
- 13. 此和基地之間的區別
- 14. 地標和註釋之間的區別
- 15. 圖層和圖案之間的區別
- 16. 帶/不帶捕獲變量的lambda之間的簽名區別?
- 17. Ruby - 變量和@variable之間的區別
- 18. 參數「數量」和「數量= 0」之間的區別?
- 19. 使用帶有矢量圖的地圖
- 20. 之間的〜/和的區別../
- 21. Angular 4 http帶參數 - 搜索和參數之間的區別
- 22. 字符串與矢量元素之間的區別<string>
- 23. 帶和不帶括號的程序之間的區別?
- 24. 1D和ND繪圖之間的區別
- 25. StateChart和活動圖之間的區別
- 26. 視圖和tableViewControllers之間的UIBarButton區別?
- 27. cpu和GPU之間的區別(圖形)
- 28. 圖形和Graphics2D之間的區別?
- 29. 圖書館和API之間的區別
- 30. 參數和參數之間的區別
'無序地圖是圍繞一個二進制tree.'的容器 - 不是二進制,它是圍繞哈希映射中的容器(帶有權訪問時間'O(1)') –
不能相信這是起牀。完全錯誤的答案是關於無序映射的一部分 – 2012-12-18 11:04:47
-1:'unordered_map'不是一個二叉樹,它(很可能)是一個哈希映射 – Angew