【发布时间】:2021-03-17 17:45:55
【问题描述】:
我有一个下面的程序。我需要了解为什么我们在使用擦除方法时需要递减指针? 还有没有更好的方法不会造成这种混乱?
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> myvector{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };
for (auto i = myvector.begin(); i != myvector.end(); ++i) {
if (*i % 2 == 0) {
myvector.erase(i);
i--;// why do we need to decrement ?
}
}
// Printing the vector
for (auto it = myvector.begin(); it != myvector.end(); ++it)
cout << ' ' << *it;
return 0;
}
【问题讨论】: