c++ 检查一个数组的特定范围的值?

标签 c++ arrays loops

我想检查数组中特定范围的值。 即,值的范围是从 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/

相关文章:

c++ - 如何使用 waveOutWrite() 使音频播放流畅

c++ - 实时键盘输入到控制台(在 Windows 中)?

javascript - 如何比较两个数组有多少相同的元素?

loops - 在循环期间增加整数

java - 在自定义数组列表中搜索最有效

c++ - 为什么在 C++ 中需要 'object slice'?为什么允许?更多错误?

c++ - 类模板部分特化问题

python - 按所有零行对 2D NumPy 数组进行切片

javascript - 我需要在 ui-grid 中显示一个字符串数组。单列,每行一个字符串

c++ - 需要帮助在循环/数组程序 C++ 中显示值