蓝桥杯基础知识5 unique()
#include
int main(){
std::vector vec = {1,1,2,2,3,3,3,4,4,5};
auto it = std::unique(vec.begin(), vec.end());
vec.erase(it, vec.end());
//1, 2, 3, 4, 5, 1, 2, 3, 4
//begin it end
for(int num : vec)std::cout << num << " ";
//1, 2, 3, 4, 5
std::cout << std::endl;
return 0;
}
C++ 在线工具 | 菜鸟工具 (runoob.com)
注意:
unique()只能去除相邻的重复元素,如果容器中存在非相邻的重复元素,则无法去除。
可以先对容器元素进行排序sort(),再使用unique();
sort()时间复杂度为O(nlogn),unique()时间复杂度为O(n)。
template
ForwardIt unique(ForwardIt first, ForwardIt last);
unique()是一个用于去除容器中相邻重复元素的函数。定义在
first:指向容器中要去重的第一个元素的迭代器。
last:指向容器中要去重的最后一个元素的下一个位置的迭代器。
类reverse(),reverse是反转。
unique()将 [first, last) 范围内的相邻重复元素去除,
并返回一个指向去重后范围的末尾后的迭代器。
去重后的范围只保留了第一个出现的元素,
后续重复元素都被移除。
可用于数组、向量、链表等。
不删除所有重复的元素,而是通过将序列中存在的下一个元素替换为
与当前要替换的当前元素不重复的下一个元素来消除重复性。
所有被替换的元素都处于未指定状态。
去重后不会更改容器的大小,仅返回一个指向容器新端的指针,
并根据此指针来调整容器的大小或删除容器的大小。
reference:
C++ std::unique用法及代码示例 - 纯净天空 (vimsky.com)
std::unique - C++中文 - API参考文档 (apiref.com)
c++ unique函数详解-CSDN博客