STL中去重函数unique
2024-10-20 00:35:52
一:unique(a.begin(),a.end());去重函数只是去掉连续的重复值,对于不连续的值没有影响,SO,在使用前一般需要进行排序处理;
二: vector<int>::iterator new_end=unique(a.begin(),a.end()); 函数返回值是一个指向新的结束位置的迭代器;
unique()函数原理如果两个连续的函数是重复的,则将第二个数用后边的不重复的数字进行覆盖,所以在unique处理之后还会在new_end和a.end() 中间存在数字,需要进行删除
简单处理的代码:
sort(a.begin(),a.end());//提前进行排序
a.erase(unique(a.begin(),a.end()),a.end());//去重并删除后边多余的数
示例:
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std; int main()
{
cin.tie(0);
cout.tie(0);
ios::sync_with_stdio(false); int n,num;
vector<int> a;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>num;
a.push_back(num);
}
sort(a.begin(),a.end());
a.erase(unique(a.begin(),a.end()),a.end());
cout<<a.size()<<endl;
for(int i=0;i<a.size();i++)
{
cout<<a[i];
if(i<a.size()-1)cout<<' ';
}
return 0;
}
最新文章
- CSSText属性批量修改样式
- Django-数据模型
- CUnit的用法
- Java正則表達式入门
- 教程 打造OS X Mavericks原版 EFI Clover 引导安装
- qosort 使用使用小例子
- Android用户界面UI组件--AdapterView及其子类(四) GridView
- 打jar包的方法
- TO DO NOW——送给奋斗着的程序“猿”们
- 读书笔记之ado.net entity framework
- 强化学习读书笔记 - 06~07 - 时序差分学习(Temporal-Difference Learning)
- unittest中的测试固件
- C# -- 使用Aspose.Cells创建和读取Excel文件
- Six advantages of Nissan consult 3 diagnostic tool
- AJPFX简述:MetaTrader 4移动交易平台
- js之模态对话框
- python魔法方法-自定义序列
- jxl和POI的区别
- XXS level1
- 【LeetCode题解】19_删除链表的倒数第N个节点(Remove-Nth-Node-From-End-of-List)