STL forward_list删除某些条件元素

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

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

STL forward_list remove_if详解

语法

forward_list1.remove_if(function)

参数

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

说明

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

案例

删除forward_list符合条件的元素

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

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

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

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

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

100_C STL forward_list删除符合条件的元素.png

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

删除forward_list符合条件的元素

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

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

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

101_C STL forward_list删除符合条件的元素.png

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

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

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