我想检查数组中特定范围的值。 即,值的范围是从 0 --> 9,实际数组有 50 个元素大。
我还想跟踪每个值有多少。 即,如果有 3 个零、8 个一和 5 个二,那么我的最终 vector 应该是 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
要容易得多:
int size = 50;
int data[size] = { 1, 2, 3, 4, 5, ... };
std::map<int, int> mymap;
for(int i = 0; i < size; i++)
{
if(data[i] >= min && data[i] <= max)
mymap[data[i]] = mymap[data[i]] + 1;
}
这节省了一些空间,因为您不保存未使用的值,而且循环计数也小得多,因为每个值只处理一次。
关于c++ 检查一个数组的特定范围的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9869198/