【转】C++给vector去重的两种方法

【转】C++给vector去重的两种方法

转自这篇博客

第一种方法是简单的利用set的特性,这部分代码比较简单,直接上code:

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

using namespace std;


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

第二种方法是结合sort和unique函数

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

所以可以先进行排序,这样重复元素就会堆一起了,调用unique()函数,再调用erase函数删除重复。代码见下:

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;


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

上述代码中
for (auto x : nums)
作用就是迭代容器中所有的元素,每一个元素的临时名字就是x,等同于下边代码
for (vector<int>::iterator iter = nums.begin(); iter != nums.end(); iter++)

猜你喜欢

转载自blog.csdn.net/weixin_44338712/article/details/107875883
今日推荐