vector 去重方法
5910
2020.09.29
2020.09.29
发布于 未知归属地

使用 set

#include <iostream>
#include <vector>
#include <set>

using namespace std;

int main()
{
    vector<int> vec = {1, 2, 3, 1, 1};
    set<int> s(vec.begin(), vec.end());
    vec.assign(s.begin(), s.end());
    for(int x : vec)
        cout << x << ",";
    return 0;
}

使用 unique()

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

int main()
{
    vector<int> vec = {1, 2, 3, 1, 1};
    sort(vec.begin(), vec.end());
    vec.erase(unique(vec.begin(), vec.end()), vec.end());
    for(int x : vec)
        cout << x << ",";
    return 0;
}

unique() 函数将重复的元素放到 vector 的尾部,然后返回指向第一个重复元素的迭代器再用 erase() 函数擦除从这个元素到最后元素的所有的元素。


使用 remove()

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

int main()
{  
    vector<int> vec(0);
    for(int i = 0 ; i < 10; i++)
    {
        vec.push_back(i);   
    }
    vec.push_back(7);
    auto ret = remove(vec.begin(), vec.end(), 7);
    vec.erase(ret, vec.end());

    for(auto &i : vec)
    {
        std::cout << i << " " << std::endl;
    }
    
    return 0;
}

C++ 给vector去重的三种方法
c++中去掉vector或者数组中的重复元素
C++ std::remove() 函数说明


评论 (0)