STL list删除某些条件元素

STL list删除某些条件元素教程

如果我们要删除 list 中的符合某些条件的元素,我们可以使用 remove_if 函数,该函数可以传入一个校验规则的函数。

STL list remove_if详解

语法

list1.remove_if(function)

参数

参数 说明
list1 需要删除元素的链表。
function 校验规则的函数。

说明

remove_if 函数,根据 function 的返回值为真或者假,来判断是否需要删除元素。

案例

删除list符合条件的元素

使用 remove_if 删除 list 中符合条件的元素

#include <iostream> #include <list> using namespace std; bool removeLen(string node) { if (node.length() > 10) { return true; } return false; } int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; list<string> list1{"Hello", "World", "HaiCoder", "www.haicoder.net"}; list1.remove_if(removeLen); for (auto&& value : list1) { cout << value << " "; } cout << endl; return 0; }

因为,这里需要使用 C++ 11,因此,我们在 Linux 下使用 g++ 进行编译,具体命令如下:

g++ list.cpp -std=c++11

编译后,我们直接运行生成的二进制文件 a.out,如下图所示:

80_C STL list根据条件删除元素.png

我们看到,我们删除了长度大于 10 的所有元素。

删除list符合条件的元素

使用 remove_if 删除 list 中符合条件的元素

#include <iostream> #include <list> using namespace std; bool removeNum(int num) { if (num > 10) { return true; } return false; } int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; list<int> list1{3, 10, 12, 5, 20}; list1.remove_if(removeNum); for (auto&& value : list1) { cout << value << " "; } cout << endl; return 0; }

编译后,我们直接运行生成的二进制文件 a.out,如下图所示:

81_C STL list根据条件删除元素.png

我们看到,我们删除了所有元素值大于 10 的元素。

STL list删除某些条件元素总结

如果我们要删除 list 中的符合某些条件的元素,我们可以使用 remove_if 函数,该函数可以传入一个校验规则的函数。