STL 如何使用list::remove_if
2013-05-03 17:15
260 查看
void list::remove_if( MATCH )
这个方法移除list中符合条件的元素。
x为list中的某个元素,如果MATCH(x)为真,则从list中移除这个元素
MATCH通常有两种形式
1、函数
2、类对象
对于函数,如下例
对于类对象,需要重载 “()” 操作符,如
从效率上将,使用函数的效率可能更高。这取决于类对象构造、析构和复制的代价。这和“传值还是传引用(或指针)”类似。
这个方法移除list中符合条件的元素。
x为list中的某个元素,如果MATCH(x)为真,则从list中移除这个元素
MATCH通常有两种形式
1、函数
2、类对象
对于函数,如下例
bool matchfun(int x) { return x>1; } int main() { list<int> lst; lst.push_back(0); lst.push_back(1); lst.push_back(2); lst.push_back(3); //此时,lst为{0,1,2,3} lst.remove_if(matchfun); //此时,lst为{0,1}; return 0; }
对于类对象,需要重载 “()” 操作符,如
class Match { public: bool operator()(int x) { return x>5; } }; int main() { list<int> lst; lst.push_back(0); lst.push_back(1); lst.push_back(2); lst.push_back(3); //此时,lst为{0,1,2,3} Match matchobj; lst.remove_if(matchobj); //此时,lst为{0,1}; return 0; }
从效率上将,使用函数的效率可能更高。这取决于类对象构造、析构和复制的代价。这和“传值还是传引用(或指针)”类似。
相关文章推荐
- (原創) 如何使用remove_copy_if() algorithm? (C/C++) (STL)
- 如何使用remove_copy_if() algorithm? (C/C++) (STL)
- stl list.remove_if使用
- 关于在STL容器list中使用find_if搜索特定的节点
- C++中防止STL中迭代器失效__map/set等关联容器vector/list/deque等序列容器_如何防止迭代器失效_即erase()的使用
- C++中防止STL中迭代器失效——map/set等关联容器——vector/list/deque等序列容器—如何防止迭代器失效—即erase()的使用
- 关于在STL容器list中使用find_if 函数
- std::list<>::remove_if的使用
- C++中防止STL中迭代器失效——map/set等关联容器——vector/list/deque等序列容器—如何防止迭代器失效—即erase()的使用
- C++中防止STL中迭代器失效__map/set等关联容器vector/list/deque等序列容器_如何防止迭代器失效_即erase()的使用
- C++/STL_利用remove_if 删除vector,list,deque满足条件的元素
- 使用STL通用算法find_if()在list中搜索对象
- 在使用stl中的ifstream出错时如何快速排错?
- (原創) 如何使用remove() algorithm? (C/C++) (STL)
- 【C++ STL应用与实现】6: 如何使用std::list
- 【C++ STL应用与实现】7: 如何使用std::forward_list 单链表 (since C++11)
- STL中remove_if()/find_if()/replace_if()的使用方法(The usages of remove_if()/find_if()/replace_if() )
- 循环语句中的if else 结构里面如何使用break语句?
- testListRemoveif
- c# web 如何使用RequiredFieldValidator控件验证CheckBoxList