C++中的unique(),unique_copy()的用法

unique 与 unique_copy 属于C++的STL模板,头文件是 algorithm

作用:

去除重复的 相邻的 重复的元素,即如果两个元素 相同 但是 不相邻,则不会去除

unique 将重复的元素没有删除,而是放在了最后面,故原来是多少元素,去重后还是多少元素,保存了剔除的元素

unique_copy 是将去重后的元素重新放到另外一个数组去,没有保存剔除的元素

故通常用前,先将数组排序

用法:

unique(begin, end)  ,begin 是开始位置,end 是结束的位置,返回一个地址,

unique_copy(begin, end, tar_begin), begin是原数组的开始地址,end原数组的结束地址,tar_begin是要复制到的数组的即目标数组的开始地址,同样返回一个地址

示例:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
ll k, p;

int main () {
    int a[] = {1, 2, 2, 2, 3, 3, 4, 5, 5, 3}; 
    int b[] = {1, 2, 2, 2, 3, 3, 4, 5, 5, 3};
    int len = unique(a, a+10) - a;
    printf("unique\nlen = %d\n", len);
    for(int i = 0; i < 10; i++)
    {
        if(i == len) puts("##");
        printf("%d ", a[i]);
    }
    printf("\n下面是unique_copy\n");
    int c[10];
    int d = unique_copy(b, b+10, c) - c;
    printf("len = %d\n", d);
    for(int i = 0; i < 10; i++)
    {
        printf("%d ", c[i]);
    }
    printf("\n");
    return 0;

输出为:

unique
len = 5
1 2 3 4 5 3 ##  // 最后输出的3是因为和他相邻的没有3
4 5 5 3     // 说明没有删除,只是放在后面而已 
下面是unique_copy
len = 6
1 2 3 4 5 3 2004323541 667813577 -2 2004226402   //说明删除了,因为后面是随机数嘛

转载于:https://www.cnblogs.com/tenlee/p/4658682.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值