关于C++中vector执行insert方法后迭代器iter++的问题
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::vector;
int main()
{
vector<int> data = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
/*
*第一种
*/
// for (auto cur = data.begin(); cur != data.end(); ++cur)
// if (*cur & 0x1)
// {
// cur = data.insert(cur, *cur);
// cur+=1;
// }
/*
*第二种
*/
auto iter = data.begin();
while (iter != data.end())
{
if (*iter % 2)
{
iter = data.insert(iter, *iter);
iter += 2 ;
}
else
iter = data.erase(iter);
}
for (auto i : data)
cout << i << " ";
system("pause");
return 0;
}
我想问的是:第一种里面为什么cur只是自增1?insert不是返回新增加的元素吗?而新增加的元素又应该在当前元素的前面,所以cur应该自增2啊?而且书上的程序也是iter+=2,这个我就不明白了.............
第二个问题:第二种里面,为什么while循环里面去掉else之后程序不能正常运行.....