如果我們有一個map <int, vector<int> >
是vector
當地圖的紅黑樹變化或它存儲指向vector
s的指針或類似的東西,並且不會移動它們(否則使用地圖不會是O(lg n)再例如,如果我們的push_back元素一些vector
S)是地圖<..,..>穩定的第二部分?
回答
見這一個: std::map, pointer to map key value, is this possible?
的秒頂端回答:
第23.1.2#8(關聯CON TAINER要求):
「插入元件不得影響迭代器和引用到容器的有效性,並擦除成員應被擦除的元素僅無效迭代器和引用。」
所以是存儲指向地圖要素的數據成員保證是有效的,除非你刪除那元素。
因此,如果引用被保留,數據就不能被複制到內存的不同部分。如果是這樣的話,我不認爲在所有執行任何副本點......
沒有,矢量不會左右移動。樹的操作只是重新排列節點之間的指針。他們不會將節點或其內容移動到內存中。
我相信C + + 03不會保證內存中的數據的穩定性,這將是一個實現細節(實際上不是你可以安全地假設沒有測試)。
注意的迭代地圖和在內存中的實際載體的位置保存有完全不同的事情。迭代器的有效性在C++規範中有明確的定義(無論是有效的還是無效的),但樹的實際內部行爲卻不是。也就是說,任何體面的編譯器(對於發佈版本/啓用優化)都會優化實現,以便實際上不會在樹中移動時複製該向量,並且std::map
的C++ 11實現將使用移動語義保證行爲。
什麼你不能假設的是,僅在內部指針移動。
'的std ::地圖
但它也保留引用(普通指針),而不僅僅是迭代器。這可以讓你爭論記憶。除非有一些奇怪的內存地址虛擬化... – CygnusX1 2012-03-18 10:25:39
- 1. 如何打印對的第二部分? EX:對<int,對<int,int>>
- 2. JQuery的:現場<a>標籤部分工作第二次,
- 3. 佈局的第二<table>不來的正是作爲第一<table>
- 4. recvfrom返回的地址的第二部分是什麼?
- 5. 排序ArrayList <ArrayList <String>>用於第二個內部ArrayList條目
- 6. 找到第二高的<attribute>
- 7. 如何檢索HashSet的第二項<Tuple <string, int>>
- 8. 如何更改<option>第三<select>基於第二<select>,其中第二是通過更改第一下拉值使用jquery ajax
- 9. 地圖部件列表<T>
- 10. 分揀地圖<String,字符串>
- 11. const vector <T> *哪部分是const?
- 12. 如何使用<select>過濾IEnumarable爲第二<select>
- 13. 如何分組名單<地圖<字符串,對象>>地圖<字符串,列表<地圖<字符串,對象>>在Java8
- 14. 導軌 - (第二測試)預期響應是一個<:redirect>,但<200>
- 15. Codeigniter - >圖像上傳第1部分
- 16. 收集地圖流<K,V>到地圖<K,List<V>>
- 17. 什麼是ClassPathXmlApplicationContext中的第二個參數(String path,<?> clazz)
- 18. php正則表達式第一部分是指定的字符串,第二部分是純數字
- 19. SQL搜索 - 第二部分
- 20. gridview問題...第二部分
- 21. 綁定地圖<字符串數組<Object>>形成
- 22. <Object>在地圖上<Object>是什麼意思?
- 23. 傳遞地圖<>:迭代作爲地圖<> ::爲const_iterator&
- 24. 部分地與第一和第二個參數
- 25. Java的8個流地圖<龍,列表<MyClass>>地圖<龍,集<Long>>
- 26. 我怎麼能部分地專注我的類模板int_ <...>,long_ <...>
- 27. 笨 - >圖片上傳第3部分 - >圖像驗證
- 28. Codeigniter - >圖像上傳第2部分 - >多個圖像
- 29. Google地圖是否尊重KML中的<BalloonStyle>定義?
- 30. 把東西在地圖<?,?>或轉換地圖<String,字符串>到地圖<?,?>
這並不解決核心問題:是'的std :: map'允許_move_元素? – 2012-03-18 09:23:45
如果一個元素被移動了,它的指針/引用將會失效(我正在談論普通指針,而不是迭代器)。這就是爲什麼 - 不 - 不允許移動元素。 ......好吧,理論上某些實現可以將對象複製到某個位置,然後回到原來的位置,但這會有點奇怪。 – CygnusX1 2012-03-18 10:24:36
雖然奇怪的是沒有這樣的要求是由'擦除'。 – 2012-03-18 11:13:45