zoukankan      html  css  js  c++  java
  • C++STL——unique函数总结

    头文件:#include <iostream>

    参数:和sort一样。两个参数——开始地址和结束地址(左闭右开)。

    返回值:去重之后的尾地址!!!

    作用:unique的作用是“去掉”容器中相邻元素的重复元素。

    解析:unique实质上是一个伪去除,它并不是真正把重复的元素删除,而是用不重复的元素把重复的元素覆盖了,所以总长度其实是不变的。

    (注意,网上有人说是把重复元素移动到末尾,其实并不是,因为如果只是移动的话每种元素的数量应该是不变的。)

    用法:因为在去重之前要排序,所以一般与sort搭配。

    int board[MAXN];
    
    int N;
    cin>>N;
    for(int _=0 ; _<N ; _++)cin>>board[_];
    
    sort(board,board+N);
    int len = unique(board,board+N) - board;

    如图:(这里可以发现7和8都比开始输入的多一个。)

    因为unique返回的是去重之后的尾地址所以可以通过减去开始地址来得到去重后的长度。

    int len = unique(board,board+N) - board;

    还可以搭配vector来删除不要的数据。

    int board[MAXN];
    
    int N;
    cin>>N;
    for(int _=0 ; _<N ; _++)cin>>board[_];
    
    sort(board,board+N);
    
    vector<int>v (board, board + N);  
    vector<int>::iterator it = unique (v.begin(), v.end() );  
    v.erase (it, v.end() );//这里就是把后面藏起来的重复元素删除了  

    另外如果是对结构体去重需要重载“==”。

  • 相关阅读:
    linux ssh 免密码登录
    Emacs Org Mode学习
    Emacs Org Mode学习
    java--for循环,一个分号的区别
    java--for循环,一个分号的区别
    【JVM.6】虚拟机类加载机制
    【JVM.5】类文件结构
    【JVM.4】调优案例分析与实战
    【JVM.3】虚拟机性能监控与故障处理工具
    【JVM.2】垃圾收集器与内存分配策略
  • 原文地址:https://www.cnblogs.com/vocaloid01/p/9101809.html
Copyright © 2011-2022 走看看