2013-02-24 68 views

回答

4

是的。该documentationboost::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()超过为空间保留的元素数量。