vector实现去重

Posted xiaokang01

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vector实现去重相关的知识,希望对你有一定的参考价值。

两种方法

  一:使用set

  二:使用sort+unique

    就是:先排序,然后用unique把重复的数字都放在后面,再用erase删除

 

//
// Created by LK on 2020/3/31.
//

#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;

// 去重方法一,使用set
void RemoveRepeat1(vector<int>& vec)
{
    set<int> setVec(vec.begin(), vec.end());
    vec.assign(setVec.begin(), setVec.end());
}
// 方法二,使用sort + unique函数
// 先排序,然后去重
void RemoveRepeat2(vector<int> &vec)
{
    sort(vec.begin(),vec.end());
    // unique让所有重复的数都放到最后,返回一个迭代器
    
    // 1 2 3 4 3 就是返回3的迭代器
    auto it = unique(vec.begin(), vec.end());

    vec.erase(it, vec.end());
}
int main()
{
    vector<int> vec = {1,2,2,1,4,2,4,7,43};
    RemoveRepeat2(vec);

    for(auto it : vec)
        cout << it << " ";
    return 0;
}

 

以上是关于vector实现去重的主要内容,如果未能解决你的问题,请参考以下文章

vector某元素是否存在查找指定元素 去重

vector 去重

C++判断元素是否在vector中,对vector去重,两个vector求交集并集

debug底层java代码,对list中的数据去重的正确姿势,及对比java list remove正确使用方法与错误使用

这个代码片段究竟做了啥?

以下代码片段的时间复杂度是多少?