如果我们要删除 list 中的符合某些条件的元素,我们可以使用 remove_if 函数,该函数可以传入一个校验规则的函数。
list1.remove_if(function)
参数 | 说明 |
---|---|
list1 | 需要删除元素的链表。 |
function | 校验规则的函数。 |
remove_if 函数,根据 function 的返回值为真或者假,来判断是否需要删除元素。
使用 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
,如下图所示:
我们看到,我们删除了长度大于 10 的所有元素。
使用 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
,如下图所示:
我们看到,我们删除了所有元素值大于 10 的元素。
如果我们要删除 list 中的符合某些条件的元素,我们可以使用 remove_if 函数,该函数可以传入一个校验规则的函数。