类似于寻找数组中元素出现个数

有一组数组a,比如说1 1 2 3 4 4 5 5,进行循环,数组b是空的
如果过程中a中元素在数组b中没出现过,计数加一,这个元素存入数组b中,就这样循环一下,得出的数组b是1 2 3 4 5,计数为5。就像这个思路用代码呈现出来。

其实如果用vector的话完全不用计数的,毕竟用vector.size()多方便


#include<iostream>
using namespace std;
#include<vector>
int main()
{
    int a[] = { 1,1,2,3,4,4,5,5 };
    int counter = 0;
    int size = sizeof(a) / 4;
    vector<int> b;
    for (int i = 0; i < size; i++)
    {
        if (count(b.begin(), b.end(), a[i])==0)
        {
            b.push_back(a[i]);
            counter += 1;
        }
    }
    for (int i = 0; i < b.size(); i++)
    {
        cout << b[i];
    }cout <<endl<< "counter=" << counter;
}

img

嘿嘿,这样怎么样

template<typename Type>
void func(const std::vector<Type>& a, std::vector<Type>& b)
{
    std::unordered_set<Type>s;
    for (const Type& value : a)
    {
        s.insert(value);
    }
    b.resize(s.size());
    std::copy(s.begin(), s.end(), b.begin());
}