迭代器擦除 (迭代器在先,迭代器最后) 在 Visual C++ 2010 Express 下不起作用



我在Visual C++2010学习版下编写代码时发现了一个问题。当执行最后一行时,我得到一个运行时错误"vector迭代器不可解引用"。下面的代码出了什么问题?

vector<int> vec (5, 1001);
vector<int>::iterator begin = vec.begin();
vector<int>::iterator end = vec.begin();
begin++; //std::advance(begin, 1); gives the same result
end++; end++; end++; //std::advance(end, 3); gives the same result
cout << (*begin) << endl;
cout << (*end) << endl;
begin = vec.erase(begin, end);
cout << (*begin) << endl;              //It doesn't work

此代码在gcc下工作。当元素被一个接一个地擦除时,它在VC++2010 Express中也能工作。

这是VC++2010 Express中的一个错误吗?

如果您没有使用SP1,那么这个VC10错误可能已经击中了你,这里也列出了一些变通方法。

最新更新