用STL对一组数组进行排序和去重

#include <iostream>
#include<cmath>
#include "algorithm"
#include "cstdio"
#include "stack"
using namespace std;
bool cmp(const int a, const int b)
{
    return a<b;
}

int main()
{
    int n;
    cin >> n;
    int a[n];
    for(int i=0;i<n;i++)
    {
        cin >> a[i];
    }
    sort(a,a+n);
    int m = unique(a,a+n)-a;//地址的差值正好为数组中数据的个数
    cout << m <<endl;
    for(int i=0;i<m;i++)
    {
        cout << a[i] << " ";
    }
    cout << endl;

    return 0;
}

第一:sort不加函数就是按从小到大的顺序进行快排。

第二:unique一般都是用于sort后的去重,实际上是把重复的元素丢到了最后面,返回的是没有重复元素数组的最后一个元素的地址。

原文地址:https://www.cnblogs.com/cunyusup/p/7719965.html