首页 > 代码库 > Effective STL: 不同容器删除元素的方法
Effective STL: 不同容器删除元素的方法
不同容器删除元素的方法
去除一个容器中有特定值的所有对象:
如果容器是vector、string或deque,使用erase-remove惯用法。
如果容器是list,使用list::remove。
如果容器是标准关联容器,使用它的erase成员函数。去除一个容器中满足一个特定判定式的所有对象:
如果容器是vector、string或deque,使用erase-remove_if惯用法。
如果容器是list,使用list::remove_if。
如果容器是标准关联容器,写一个循环来遍历容器元素,当你把迭代器传给erase时记得后置递增它(在erase一个元素之后,指向该元素的迭代器就失效了,所有在erase前要获取指向下一个元素的迭代器)。AssocContainer<int> c; ... for (AssocContainer<int>::iterator i = c.begin(); i != c.end(); /*nothing*/ ) // for循环的第三部分是空的;i现在在下面自增 { if (badValue(*i)) { c.erase(i++); // 对于坏的值,把当前的i传给erase,然后作为副作用增加i; } else { ++i; // 对于好的值,只增加i } }
在循环内做某些事情(除了删除对象之外):
如果容器是标准序列容器,写一个循环来遍历容器元素,每当调用erase时记得都用它的返回值更新迭代器。如果容器是标准关联容器,写一个循环来遍历容器元素,当你把迭代器传给erase时记得后置递增它
Effective STL: 不同容器删除元素的方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。