c++primer中文版的316页的 一个改变容器的循环程序
vector 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);
iter+=2;
}
else
iter=vi.erase(iter);
}
这个程序不能用在forward_list中我知道是因为单向链表没用很好的获得前驱的方法,
只能作用于后一元素,但是list为什么也不行?
先谢谢了。
主要是因为这句话:iter+=2;
这要求容器的迭代器为随机迭代器。
list虽然是双向循环链表,但是其迭代器为双向迭代器,不能满足要求。即不能有iter+=2;操作。
它只能做两次的++iter操作。
list单向链表也没发获取前驱节点