STL forward_list删除重复元素

STL forward_list删除重复元素教程

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

STL forward_list unique详解

语法

forward_list1.unique() forward_list1.unique(function)

参数

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

说明

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

案例

删除forward_list的相同元素

使用 unique 删除 forward_list 中的相同元素

#include <iostream> #include <forward_list> using namespace std; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; forward_list<string> flist{"Hello", "Hello", "Hello", "HaiCoder", "Hello"}; flist.unique(); for (auto&& value : flist) { cout << value << " "; } cout << endl; return 0; }

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

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

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

102_C STL forward_list删除重复元素.png

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

删除forward_list的相同元素

使用 unique 删除 forward_list 中的相同元素

#include <iostream> #include <forward_list> using namespace std; bool isEqual(double num1, double num2) { return (int(num1) == int(num2)); } int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; forward_list<double> flist{1.1, 1.4, 1.6, 3.1, 3.4, 5.1, 3.2, 5.9, 5.7}; flist.unique(isEqual); for (auto&& value : flist) { cout << value << " "; } cout << endl; return 0; }

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

103_C STL forward_list删除重复元素.png

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

STL forward_list删除重复元素总结

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