如何在单个向量中找到匹配元素

时间:2019-02-05 05:27:55

标签: c++ for-loop vector

我想产生一个元素在向量中不再出现的次数。向量中的元素必须由种子(在这种情况下为3)随机分配。

例如,如果在矢量中再次显示数字2、6和4,大小为30,则由于3个数字重复,因此totalComplete应该为27。

#include <stdlib.h>
#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;

int main()
{
    vector<int> seats;
    int totalComplete = 0;
    srand(3);
    seats.resize(30);
    for(int k = 0; k < 20; k++){
        seats.at(k)=(rand()%30);
        cout << seats.at(k);
        cout <<" ";
        totalComplete++;
        for(int j = 0; j < 20; j++){
            if(j != k)
                if(seats.at(k) == seats.at(j))
                    totalComplete--;
        }
        cout<<endl;
    } 
    cout << totalComplete;
    return 0;
}

所以在我的代码中,向量中随机放置的数字是6 25 18 0 15 10 12 16 1 4 28 4 3 19 22 21 24 25 115。数字25、15、1和4重复它们,所以totalComplete应该为16。但是,我的代码产生0。我认为检查数字是否重复的区域是错误的。

1 个答案:

答案 0 :(得分:0)

我的直接建议是将代码分成小块,并分别测试每个代码。我将从一个函数开始,用随机数填充数组。然后,我将编写一个仅计算唯一条目的函数。分别测试每个人,并检查是否得到了期望的结果。然后,当每个人都单独工作时,将它们放在一起就可以得到一个完整的程序,该程序可以满足您的实际需求。