• 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
    len = %d
    ", len);
        for(int i = 0; i < 10; i++)
        {
            if(i == len) puts("##");
            printf("%d ", a[i]);
        }
        printf("
    下面是unique_copy
    ");
        int c[10];
        int d = unique_copy(b, b+10, c) - c;
        printf("len = %d
    ", d);
        for(int i = 0; i < 10; i++)
        {
            printf("%d ", c[i]);
        }
        printf("
    ");
        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   //说明删除了,因为后面是随机数嘛

  • 相关阅读:
    高精度加法和减法。加法还好,减法花了不少时间。
    整数拆分
    二叉搜索树的中位数
    基本有序数组的排序
    log4j手册
    mysql技巧
    vim配置文件
    regex for python like preg_match of php
    字符串按word反转
    the little redis 阅读笔记
  • 原文地址:https://www.cnblogs.com/tenlee/p/4658682.html
Copyright © 2020-2023  润新知