c++ - 为什么当我删除 std::vector 的成员时我的程序崩溃

标签 c++ stl

我有一个像下面这样的 vector

vector<unsigned int> myvector;
vector<unsigned int>::iterator it;

//fill it 
for (i=1; i<=10; i++) myvector.push_back(i);

//I want delete first one 
it = myvector.begin();
myvector.erase(it++);

//I want to know if I am in last element
if(it != myvector.end()) 
      cout << "a test";

但是在比较表达式中我的程序崩溃了。为什么?

最佳答案

简单的说,因为在调用erase()之后,vector中所有指向被删除位置或者后面位置的迭代器都是无效的。参见,例如,here有关此的官方文档。

关于c++ - 为什么当我删除 std::vector 的成员时我的程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11845984/

相关文章:

c++ - 根据其他列表对列表进行排序

c++ - std::sort 是否改变相等元素的相对顺序?

c++ - STL accumulate() 函数

c++ - 在 C++03 中,如何根据类型特征有条件地声明模板类的静态数据成员

c++ - 具有默认参数的函数<void(T)> 参数

c++ - 如何编写我自己的操纵器?

java - 运算符重载 STL 的性能损失是什么

c++ - 如何解决 CMake 构建不可重现的 SegFault

c++ - 如果输入字母而不是数字,为什么会出现无限循环?

c++ - 最有可能使用什么方法来处理多个键以使用 STL 容器获取值?