tha*_*ere 2 c++ iterator vector
我有一个函数void AddEntity(Entity* addtolist)
将元素推回到a,vector
但由于当元素添加到元素时大小和容量相等vector
,向量重新分配并iterator
变为无效.
然后,当我尝试增加迭代器时,由于无效的迭代器,我得到了崩溃,因为push_back(...)
没有将迭代器返回到重新分配的内存,我想知道如何解决这个问题.
我应该只使用insert(...)
它,因为它确实返回一个iterator
,或者我应该使用一个指针,在重新分配后存储对向量的引用,然后iterator
使指向重新分配的指针相等vector
?
vector::push_back(const T& x);
Run Code Online (Sandbox Code Playgroud)
在向量的末尾添加一个新元素,在其当前的最后一个元素之后.此新元素的内容初始化为x的副本.
这有效地将向量增加size
1,如果向量大小等于调用之前的向量容量,则导致内部分配存储的重新分配.重新分配使以前获得的所有迭代器,引用和指针无效.
使用无效的向量会导致崩溃或未定义的行为.
所以只需使用一个新的迭代器vector::begin()
.
vector<int> myvector;
vector<int>::iterator it;
it=myvector.begin()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2889 次 |
最近记录: |