在我的代碼中,我有一個包含大量數據(〜100MB)的地圖,我需要將所有數據從一個地圖複製到另一個地圖。目前我正在做這個交換but to my understanding,交換是一個奇特的方式來做副本。有沒有辦法簡單地傳輸這兩個地圖使用的內存?我認爲我可以用指針做到這一點,但我希望能有一個更優雅的方式。是否有快速的方法來替換兩個地圖內容?
1
A
回答
4
除非在探查器運行中出現瓶頸,否則您可能會過早進行優化。
我的編譯器的std::map::swap()
有以下評論,這表明一個地圖交換很可能是非常快:
/**
* This exchanges the elements between two maps in constant
* time. (It is only swapping a pointer, an integer, and an
* instance of the @c Compare type (which itself is often
* stateless and empty), so it should be quite fast.) Note
* that the global std::swap() function is specialized such
* that std::swap(m1,m2) will feed to this function.
*/
(g++ 4.4.5
)
5
23.2.1 [container.requirements.general]的ISO/IEC 14882:2011包含一般容器要求清單。對於所有標準集裝箱,表達式a.swap(b)
和swap(a, b)
必須交換a
和b
的內容,並且對於除array
之外的所有標準集裝箱都必須具有恆定的時間。這實際上意味着交換地圖不能涉及複製所有地圖元素。
相關問題
- 1. 是否有更快的方法來比較兩個變量?
- 2. preg_replace是否可以替換兩個符號之間的所有內容?
- 3. R:有條件替換列值的快速方法
- 4. 快速的方法來從一個bitset
- 5. PHP快速替換字符之間字符串的內容
- 6. 最快的方法來檢查兩個陣列是否有相同的行
- 7. 快速的方法來轉換寬絃樂LE - >是
- 8. 是否有快速的方式來繪製WPF文本
- 9. XSL:是否有使用謂詞變量的快速替代方法?
- 10. memcmp - 是否有更快的方法來按位比較兩個緩衝區
- 11. 是否有任何快速的方法來獲取字符串中的最後兩個字符?
- 12. 是否有一個快速的SCNMaterials庫?
- 13. 在R中的`data.table`中,是否有快速的方法來組合表格?
- 14. 是否有快速的方法來刷新Crystal報表中的Oracle表結構
- 15. 快速重繪地圖的有效方法(Java/JPanel)
- 16. 是否有任何解決方法來運行混合內容?
- 17. SWT:找出殼是否有子殼的快速方法
- 18. 顯式替換sp_executesql語句中的參數的快速方法?
- 19. 是否有內置的方法來檢查IP地址是否已被佔用?
- 20. 是否存在快速且可預測的`SendKeys`替代方案?
- 21. 快速替換爲Constants.h
- 22. 快速,原子表替換
- 23. 快速替換JComboBox/BasicComboBoxUI?
- 24. Google地圖數據API - 上傳KML /替換地圖內容
- 25. Python:有沒有簡單的方法來替換字符串,而不是替換()
- 26. 是否有一個ftp_rawlist()替代方法來避免內存問題?
- 27. 有沒有一種快速的方法來檢查一個變量是否屬於一個集合?
- 28. 快速的方法來創建對
- 29. 快速的方法來檢查主機
- 30. 快速的方法來湊整數
不,std :: map :: swap真的只是交換指針,而不是做一個副本。 (但是如果你使用了'std :: swap',那麼_will_會做一個拷貝。) –
@ChrisJesterYoung:23.4.1.5 [map.special]說''std :: swap'爲兩個映射'x'和'y'必須專門做相當於'x.swap(y)'。應該沒有區別。 (我沒有跟蹤你!) –
@CharlesBailey:呃,再一次,你是對的。帽子提示等:-) –