如果我们要删除 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
,如下图所示:我们看到,我们删除了长度大于 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
,如下图所示:我们看到,我们删除了所有元素值大于 10 的元素。
STL forward_list删除某些条件元素总结
如果我们要删除 forward_list 中的符合某些条件的元素,我们可以使用 remove_if 函数,该函数可以传入一个校验规则的函数。