STL——unique去重函数

从北大资料的一段代码里学习到这个函数。时间方面没有严格核对过,但写起来很简洁

举一个

#include<iostream>
#include<algorithm>//
#include<cstdio>
#define maxn 50005
using namespace std;//
int main(){
    int n;
    int cnt;
    int a[6]={2,1,1,1,8,10};
    n=unique(a,a+6)-a;
    cout<<"a:"<<n<<endl;
    for(i=0;i<6;i++)
        cout<<a[i]<<endl;
    return 0;
}
输出结果为

a:4

2

1

8

10

8

10

原数组中第2,3,4位重复为1,使用unique函数后,无重数组长度为4,最后输出的前四个数就是去重的结果

总结一下:

unique函数:作用是去除数组中相邻的重复元素(必须相邻),一般排序后使用。返回结果是去重后最后一个数的地址。在C++中的STL库下,所以算法头文件和命名空间必须

但在最后还有8,10。这里就是要注意的——unuique函数根本不是删除空间,而是后面的数取代相邻重复的数,最后数组里还有之前的值(个人理解,希望可以留言指正,谢谢)

看到很多资料都是用在vector上进行stl函数操作的,确实这样比较合理。因为个人习惯等方面这篇文章里只是用在简单数组上,可能不够严谨。

网上的很多大神总结的很详细

比如:http://www.cnblogs.com/heyonggang/archive/2013/08/07/3243477.html

STL很强大,还有很多要学的

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值