1
A
回答
4
是的。該documentation爲boost::ptr_vector<T>
狀態:
甲
ptr_vector<T>
是使用底層std::vector<void*>
存儲指針的指針容器。
將元素插入或刪除std::vector
中的元素可能會導致重新分配,從而導致現有迭代器失效。
具體地說,§23.3.6.5/ 3的C++ 11個狀態約erase()
:
(3)電子FF學分:在或擦除的點之後失效迭代器和引用。
約insert()
和push_back()
:
(1)備註:導致重新分配,如果新的尺寸比舊款更大的容量。如果沒有重新分配,插入點之前的所有迭代器和引用仍然有效。
因此,爲了防止迭代器失效在元件插入的情況下,可以使用的功能reserve()
從它獲得任何迭代之前,以增加載體的容量。那些迭代器將保持有效,直到向量的size()
超過爲空間保留的元素數量。
相關問題
- 1. ptr_vector迭代器不需要增量嗎?
- 2. 迭代器是否失效?
- 3. 迭代通過boost ptr_vector
- 4. std :: insert_iterator和迭代器失效
- 5. 迭代器失效中的boost :: unordered_map
- 6. C++多圖迭代器失效
- 7. std :: move()使迭代器失效嗎?
- 8. std ::向量迭代器失效
- 9. 增加可變輸入迭代器是否使舊迭代器值失效?
- 10. 如果迭代器在STL容器中失效,指針是否失效
- 11. 迭代器的有效性
- 12. Arrayaccess,迭代器和當前()
- 13. 返回迭代器似乎使其失效
- 14. C++ deque的迭代器在push_front()之後失效
- 15. 調試斷言失敗:無效的迭代器
- 16. 矢量排序是否使迭代器失效?
- 17. hash_map.erase是否使所有迭代器失效?
- 18. 迭代器的迭代器
- 19. 性能 - 使用keySet迭代器代替entrySet迭代器的效率低
- 20. Python迭代效率
- 21. 關於使迭代器無效
- 22. 輸入迭代器的等效比較
- 23. 無效std ::向量迭代器
- 24. threadsafety VS迭代器有效性
- 25. vector <T> ::迭代器 - 無效?
- 26. 調用擦除後迭代器無效
- 27. const_reference或迭代器的映射(當沒有實際迭代時)
- 28. 在ostream中使用迭代器失敗
- 29. Python迭代器:重置迭代器?
- 30. 從(int&i:i)獲取當前迭代器