如果我们要删除 forward_list 中的所有的重复的元素,我们可以使用 unique 函数,unique 函数只能删除相邻的重复元素,其中 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
,如下图所示:我们看到,我们使用了 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
,如下图所示:我们看到,我们通过使用自定义函数,使用了 unique 删除了重复元素。
STL forward_list删除重复元素总结
如果我们要删除 forward_list 中的所有的重复的元素,我们可以使用 unique 函数,unique 函数只能删除相邻的重复元素,其中 unique 函数还可以传入一个函数,根据函数规则,判断两个元素是否相等。