C++ STL中forward_list::unique()函数
forward_list::unique() 是C++ STL中的一个内置函数,它可以从forward_list中删除所有连续的重复元素,它使用二元谓词进行比较。
语法:
forwardlist_name.unique(BinaryPredicate name)
参数: 该函数接受一个单一的参数,即 二元谓词 ,如果元素应被视为相等,则返回 true。其具有以下语法:
bool name(data_type a, data_type a)
返回值: 该函数不返回任何内容。
// C++程序来说明
// unique() 函数
#include
using namespace std;
// 二元谓词函数
/* bool compare(int a, int b)
{
return (abs(a) == abs(b));
}
// 这个函数也可以在unique()中使用且得到相同结果
*/
int main()
{
forward_list list = { 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 4, 4 };
cout << "unique 操作前的列表元素为: ";
// 从列表的第一个元素开始到最后一个元素
for (auto it = list.begin(); it != list.end(); ++it)
cout << *it << " ";
// forward list 上的 unique 操作
list.unique();
cout << "\nunique 操作后的列表元素为: ";
// 从列表的第一个元素开始到最后一个元素
for (auto it = list.begin(); it != list.end(); ++it)
cout << *it << " ";
return 0;
}
输出结果:
unique 操作前的列表元素为: 1 1 1 1 2 2 2 2 3 3 3 2 4 4
unique 操作后的列表元素为: 1 2 3 2 4
时间复杂度: O(N),其中N是所比较的元素数
辅助空间: O(1)