我一直在学习C++,但现在我遇到了一个令我困惑的问题。问题是,当我尝试擦除矢量中的元素时,擦除功能不会擦除我想擦除的元素,而是擦除矢量中的最后一个元素。我重建问题与这一段代码,使其更容易理解我的问题比起来,我的整个代码:vector :: erase不会擦除所需的元素,而是会擦除矢量中的最后一个元素
#include <vector>
#include <iostream>
int main()
{
std::vector<int> c;
for(int i=0; i<=10; i++){
c.push_back(i);
}
for (int i=0;i<c.size();i++) {
std::cout << i << " ";
}
std::cout << '\n';
c.erase(c.begin()+2);
for (int i=0;i<c.size();i++) {
std::cout << i << " ";
}
std::cout << '\n';
c.erase(c.begin()+2, c.begin()+5);
for (int i=0;i<c.size();i++) {
std::cout << i << " ";
}
std::cout << '\n';
}
结果不是预期的:
0 1 2 3 4 5 6 7 8 9 10
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6
时我认为结果会是
0 1 2 3 4 5 6 7 8 9 10
0 1 3 4 5 6 7 8 9 10
0 1 2 7 8 9 10
我在做一些完全错误的事情吗?或者为什么这样做不像我想的那样工作? 如果它是相关的,我使用MinGW编译器的Windows。
是的,当然。感谢您的快速回复! – Tuotau 2014-10-19 20:52:21
嗯,我没有在我的实际代码中犯同样的错误。我应该编辑问题来包含有问题的部分形式,我的实际代码,或再次询问?对不起,使这个复杂.. – Tuotau 2014-10-19 20:54:59
关于你的问题,我只知道[这个汇编](http://meta.codereview.stackexchange.com/questions/1763/for-an-iterative-review-is-it-okay-编辑我自己的问题包括修订c/1765#1765)这听起来合理的我。之后,你应该问一个新的问题。 – davidhigh 2014-10-19 20:57:29