如果你想要除去一个itnt数组中重复的数字,又想查看重复了哪些数,你会怎么做呢?
unique
函数是STL中的函数,用于移除指定范围中彼此相邻的重复元素,其算法具有线性时间复杂度。
头文件
algorithm
格式与参数
unique(first,last)
- 参数first是一种迭代器,用于寻址要进行重复删除扫描的范围中第一个元素的位置。
- 参数last是一种迭代器,用于寻址要进行重复删除扫描的范围中最后一个元素之后下一个元素的位置。
(unique函数还有多种重载,但并不是很常用,此处不过多描述。)
返回值
一种前向迭代器(实质是地址),指向不包含连续重复项的已修改序列新末尾位置。
注意事项
由于unique函数只能移除彼此相邻的重复元素,所以当数组元素不按顺序排列时需要先进行排序。
unique函数把重复的元素放到数组的最后面,这些元素仍可以使用下标访问到。
用法
vector<int> v(4)={1,1,4,5};
auto p=unique(v.begin(),v.end());
int len=unique(v.begin(),v.end())-v.begin();
上述代码中p
为第一个重复数字的地址,len
为去重后数组的长度。