如果我们要删除 list 中的所有的重复的元素,我们可以使用 unique 函数,unique 函数只能删除相邻的重复元素,其中 unique 函数还可以传入一个函数,根据函数规则,判断两个元素是否相等。
list1.unique() list1.unique(function)
参数 | 说明 |
---|---|
list1 | 需要删除元素的链表。 |
function | 校验规则的函数。 |
unique 函数,也可以根据 function 的返回值为真或者假,来判断是否需要删除元素。
使用 unique 删除 list 中的相同元素
#include <iostream>
#include <list>
using namespace std;
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
list<string> list1{"Hello", "Hello", "Hello", "HaiCoder", "Hello"};
list1.unique();
for (auto&& value : list1)
{
cout << value << " ";
}
cout << endl;
return 0;
}
因为,这里需要使用 C++ 11,因此,我们在 Linux 下使用 g++ 进行编译,具体命令如下:
g++ list.cpp -std=c++11
编译后,我们直接运行生成的二进制文件 a.out
,如下图所示:
我们看到,我们使用了 unique 删除了重复元素,而且,unique 只能用于删除多个连续相同的元素。
使用 unique 删除 list 中的相同元素
#include <iostream>
#include <list>
using namespace std;
bool isEqual(double num1, double num2)
{
return (int(num1) == int(num2));
}
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
list<double> list1{1.1, 1.4, 1.6, 3.1, 3.4, 5.1, 3.2, 5.9, 5.7};
list1.unique(isEqual);
for (auto&& value : list1)
{
cout << value << " ";
}
cout << endl;
return 0;
}
编译后,我们直接运行生成的二进制文件 a.out
,如下图所示:
我们看到,我们通过使用自定义函数,使用了 unique 删除了重复元素。
如果我们要删除 list 中的所有的重复的元素,我们可以使用 unique 函数,unique 函数只能删除相邻的重复元素,其中 unique 函数还可以传入一个函数,根据函数规则,判断两个元素是否相等。