摘要: 按条件删除最容易想到的方法是用迭代器遍历向量,满足条件者删除之。然而用erase处理过的迭代器会失效。在C++11中erase的返回值是下一个迭代器,因此可以这样用:itr=vec.erase(itr);最好的解决办法是不用迭代器。用algorithm里的remove或者remove_if方法。这两个方法会把向量中所有满足条件的元素删除。这里要注意的是,删除操作截短了向量,在原向量的尾部,也就是新向量尾部之后,会有一段垃圾段落。需要用erase的一个重载:erase(itr1,itr2)删除掉。这次看起来多余的erase的调用是因为remove仅仅是将新向量的尾部作为返回值返回,而没有直接更改 阅读全文
posted @ 2013-06-19 18:53 farseeraliens 阅读(631) 评论(0) 推荐(0) 编辑