网上的解释为:
参考链接:链接
不过我试了下,下面的代码是可以的,暂时不知道原因
#include <iostream>
#include <string>
#include <vector>
#include <list>
#include <deque>
#include<forward_list>
using namespace std;
int main()
{
vector<int> vi = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
auto iter = vi.begin();
while (iter != vi.end())
{
if (*iter % 2 == 1)
{
iter = vi.insert(iter, *iter++); // 在iter指向的元素之前插入一个元素
// 返回指向新添加的元素的迭代器
iter++;
}
else
{
iter = vi.erase(iter);
}
}
for (auto v : vi)
{
cout << v << " ";
}
return 0;
}