C++ primer上的一道题,奇数就插入(未规定前后),偶数就erase。问标题中的语句是否合法。自己觉得是不合法的。但是Dev上可以正常运行,出现结果却很诧异。知道正确的写法,但是很好奇为什么会出现“1 1 1 3 3 3……”的输出。注释是自己试了几次后的分析,但是不正确。想请教编译器在这个语句过程中到底做了什么。求大神指教!!万分感谢!
list vi = {0,1,2,3,4,5,6,7,8,9};
auto iter = vi.begin();
while (iter != vi.end()) {
if (*iter % 2) {
iter = vi.insert(iter, *iter++); //temp = *iter; iter++; iter = vi.insert(iter, temp);
++iter;
++iter;
} else
iter = vi.erase(iter);
}