摘要: 使用STL的几个容器,经常会遇到遍历所有元素,然后删除满足某些条件的元素。直接删除是会有问题的,比如:for (vector<T>::iterator it = lst.begin(); it != lst.end(); ++it){ if(condition) { lst.erase(it); }}因为对list而言,一旦一个元素被删除了,指向该节点的iterator可能会失效,再执行++it可能就会有问题。查了一下stl的源码,list的源码在:stl_list.hiterator erase(iterator __position);具体的实现在:list... 阅读全文
posted @ 2012-04-11 18:38 传灯 阅读(316) 评论(0) 推荐(0) 编辑