我想检查一个数组是否包含一定范围内的特定数值。
例如,值的范围是0 -> 9,而实际数组有50个元素。
我还想跟踪每个值有多少个。 例如,如果有3个零,8个一和5个二,则我的最终向量应该是3 8 5.
我已经用下面的代码解决了这个问题。但是,我发现我的范围值需要等于我的数组大小,否则它不会检查所有元素。
有没有更好的方法来解决这个问题?
我还想跟踪每个值有多少个。 例如,如果有3个零,8个一和5个二,则我的最终向量应该是3 8 5.
我已经用下面的代码解决了这个问题。但是,我发现我的范围值需要等于我的数组大小,否则它不会检查所有元素。
有没有更好的方法来解决这个问题?
int main() {
int intensityRange = 10;
int cloudSize = 10;
int cloud [] = {0, 3, 3, 2, 1, 5, 2, 3, 5, 2};
vector <int> totalGreyValues;
int k = 0;
for (int i = 0; i < intensityRange; i++) {
for (int j = 0; j < cloudSize; j++) {
if (cloud[j] == i) {
k = k + 1;
cout << " " << k;
}
else
cout << " no match ";
}
totalGreyValues.push_back (k);
k = 0;
}
cout << endl << endl << totalGreyValues.size();
for (int h = 0; h < totalGreyValues.size(); h ++)
cout << " " << totalGreyValues[h];
// values --> 0 1 2 3 4 5 6 7 8 9
// answer --> 1 1 3 3 0 2 0 0 0 0
return 0;
}
std::map
的存在,它不需要这样做。例如,使用此方法,您可以编写mymap[8] = 1;
,它会自动创建一个int,您可以将其用作值(此处为8)的计数器,并在每次进一步检查时递增。稍后,您只需遍历所有保存的计数器和值即可。 - Pillum