C++ 如何计算数组中出现的次数?

C++ 如何计算数组中出现的次数?,c++,arrays,loops,C++,Arrays,Loops,我已经从1-5生成了一个由5个随机整数组成的数组。下面是数组现在的样子:myArray[5]={3,3,1,4,5} 我现在已经按升序对5个整数的数组进行了排序,从最小到最大 myArray[5]={1,3,3,4,5} 我现在需要计算一个特定整数出现的次数,并将其制成一个表格 例如: Number: Count: 1:1 2:0 3:3 4:0 5:1 我得到的最远的结果是在阵列中循环。我很难统计这些数字,也很难计算出发生了多少次 不使用任何贴图或迭代等。我正在尝试获得此计数。以下

我已经从1-5生成了一个由5个随机整数组成的数组。下面是数组现在的样子:
myArray[5]={3,3,1,4,5}

我现在已经按升序对5个整数的数组进行了排序,从最小到最大

myArray[5]={1,3,3,4,5}

我现在需要计算一个特定整数出现的次数,并将其制成一个表格

例如:

Number: Count: 
1:1 
2:0 
3:3 
4:0 
5:1
我得到的最远的结果是在阵列中循环。我很难统计这些数字,也很难计算出发生了多少次

不使用任何贴图或迭代等。我正在尝试获得此计数。以下是我已经尝试过的:

int counts[10];

for (int x = 0; x <= 10; x++){
    int counter = 0;
    for (int j = 0; j < ARRAY_SIZE; j++){
        if (x == myArray[j]){
            counts[x] == counter++;
        }
    }

    cout << "Number: " << x << "Number of Occurances: " << counts[counter]<< "\n";
}
int计数[10];

对于(int x=0;x使用
std::map
将整数映射到其计数

std::map<int, int> counts;
for (int i = 0; i < 5; i++) {
    counts[myArray[i]]++; // increment the counter for the current value
}

创建一个散列并用零初始化

int hash[10000]={0};
for(int i=0;i<n;i++)
{  
     hash[arr[i]]++;
}
int散列[10000]={0};

对于(int i=0;使用当前元素中的值作为数组中的索引,并增加计数.btw,不需要对数组进行排序。实际上,由于这是C++,所以应该使用<代码> STD::MAP< /Calp>。嘿,BARMAR,我仍然对这个解决方案感兴趣。我已经尝试做你解释过的,但是我是。出现一些奇怪的行为。请详细说明此解决方案。如果您打算使用map存储数字频率,则不必首先对数组进行排序。请将您尝试的解决方案添加到问题中。否则,我如何才能告诉您您做错了什么,以便您可以从错误中吸取教训?在本例中,我如何循环thr通过
计数
并打印出键和值?我添加了一个指向另一个问题的链接来回答这个问题。我添加了一个版本的代码,它使用数组而不是映射。基本上是一样的,但您必须显式初始化它,并确保不超出数组边界。为什么使用映射而不是哈希映射?
std::map
很可能使用哈希表实现。
int hash[10000]={0};
for(int i=0;i<n;i++)
{  
     hash[arr[i]]++;
}