STL list删除重复元素

STL list删除重复元素教程

如果我们要删除 list 中的所有的重复的元素,我们可以使用 unique 函数,unique 函数只能删除相邻的重复元素,其中 unique 函数还可以传入一个函数,根据函数规则,判断两个元素是否相等。

STL list unique详解

语法

list1.unique() list1.unique(function)

参数

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

说明

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

案例

删除list的相同元素

使用 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,如下图所示:

82_C STL list删除重复元素.png

我们看到,我们使用了 unique 删除了重复元素,而且,unique 只能用于删除多个连续相同的元素。

删除list的相同元素

使用 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,如下图所示:

83_C STL list删除重复元素.png

我们看到,我们通过使用自定义函数,使用了 unique 删除了重复元素。

STL list删除重复元素总结

如果我们要删除 list 中的所有的重复的元素,我们可以使用 unique 函数,unique 函数只能删除相邻的重复元素,其中 unique 函数还可以传入一个函数,根据函数规则,判断两个元素是否相等。