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)获取当前迭代器