如何在vector.push_back()导致重新分配后使向量迭代器指向向量?

tha*_*ere 2 c++ iterator vector

我有一个函数void AddEntity(Entity* addtolist)将元素推回到a,vector但由于当元素添加到元素时大小和容量相等vector,向量重新分配并iterator变为无效.

然后,当我尝试增加迭代器时,由于无效的迭代器,我得到了崩溃,因为push_back(...)没有将迭代器返回到重新分配的内存,我想知道如何解决这个问题.

我应该只使用insert(...)它,因为它确实返回一个iterator,或者我应该使用一个指针,在重新分配后存储对向量的引用,然后iterator使指向重新分配的指针相等vector

Alo*_*ave 7

vector::push_back(const T& x);
Run Code Online (Sandbox Code Playgroud)

在向量的末尾添加一个新元素,在其当前的最后一个元素之后.此新元素的内容初始化为x的副本.

这有效地将向量增加size1,如果向量大小等于调用之前的向量容量,则导致内部分配存储的重新分配.重新分配使以前获得的所有迭代器,引用和指针无效.

使用无效的向量会导致崩溃或未定义的行为.
所以只需使用一个新的迭代器vector::begin().

vector<int> myvector;

vector<int>::iterator it;
it=myvector.begin()
Run Code Online (Sandbox Code Playgroud)