【发布时间】:2021-10-15 10:38:43
【问题描述】:
在我的项目中,我正在尝试创建一个向量并保存一个迭代器,该迭代器指向向量的某个元素,稍后我可能想要删除这些元素。与此同时,新元素将被添加到向量中,在添加一些元素后,我想删除从向量中保存的迭代器。
这是我尝试做的:
std::vector<foo> vec;
vec.push_back(foo());
std::vector<foo>::iterator it = vec.begin();
for (int i = 0; i < 10; i++) {
vec.push_back(foo());
}
vec.erase(it);
但是这样做会出现执行错误,提示“向量擦除迭代器超出范围” 为什么这种方法是错误的?我怎样才能做到正确?
【问题讨论】:
-
使用索引而不是迭代器。 (顾名思义,迭代器用于迭代。它们不是通用指针。)