我有一个函数
void AddEntity(Entity* addtolist)
,它将元素推回到一个 vector
中,但由于在将元素添加到 vector
时大小和容量相等,所以 vector
重新分配了空间,导致 iterator
变为无效。
然后当我尝试增加迭代器时,由于无效的迭代器而崩溃,由于 push_back(...)
不返回指向重新分配内存的迭代器,我想知道如何解决这个问题。
我应该只使用 insert(...)
,因为它确实返回一个 iterator
,还是应该使用一个指针来存储对重新分配后的向量的引用,然后使 iterator
等于指向重新分配的 vector
的指针?
push_back
之后,为什么您仍然要使用先前的迭代器? - Nawazsize_t
,但在这种情况下,正确的类型应该是std::vector<T>::size_type
。 - Chris Lutzinsert
返回插入元素的迭代器。push_back
不返回迭代器,因为新元素的位置非常明显! - Bo Persson