c++统计数组中每个数字出现的次数
在 C++ 中,你可以使用 std::map 或 std::unordered_map 来统计数组中每个数字出现的次数。以下是一个使用 std::map 的示例代码:
#include <iostream>
#include <map>
#include <vector>
int main() {
std::vector<int> arr = {1, 2, 3, 1, 2, 3, 4, 5, 1, 2, 3};
std::map<int, int> countMap;
// 遍历数组,统计每个数字出现的次数
for (int num : arr) {
countMap[num]++;
}
// 输出结果
for (const auto& pair : countMap) {
std::cout << "Number: " << pair.first << ", Count: " << pair.second << std::endl;
}
return 0;
}这个示例中,我们首先定义了一个整数数组 arr,包含了一些数字。然后,我们创建了一个 std::map<int, int> 类型的 countMap,其中 int 表示数组中的数字,int 表示对应数字出现的次数。
接下来,我们使用一个循环遍历数组 arr,对每个数字进行计数。我们使用 countMap[num]++ 来增加对应数字的计数器。
最后,我们再次遍历 countMap,输出每个数字以及它们出现的次数。
运行这段代码将输出以下结果:
Number: 1, Count: 3 Number: 2, Count: 3 Number: 3, Count: 3 Number: 4, Count: 1 Number: 5, Count: 1
这表示数字 1、2 和 3 在数组中各自出现了 3 次,而数字 4 和 5 分别只出现了 1 次。
如果不使用 std::map,可以使用一个数组来统计数字出现的次数。假设数组中的数字范围在 0 到 100 之间,可以创建一个大小为 101 的整型数组,将数组的索引与数字对应起来,数组的值表示该数字出现的次数。
以下是使用数组统计数字出现次数的示例代码:
#include <iostream>
#include <vector>
const int MAX_NUMBER = 100;
int main() {
std::vector<int> arr = {1, 2, 3, 1, 2, 3, 4, 5, 1, 2, 3};
// 创建一个大小为 MAX_NUMBER+1 的数组,初始化为 0
int countArr[MAX_NUMBER + 1] = {0};
// 遍历数组,统计每个数字出现的次数
for (int num : arr) {
countArr[num]++;
}
// 输出结果
for (int i = 0; i <= MAX_NUMBER; i++) {
if (countArr[i] > 0) {
std::cout << "Number: " << i << ", Count: " << countArr[i] << std::endl;
}
}
return 0;
}在这个示例中,我们使用一个大小为 MAX_NUMBER + 1 的数组 countArr,其中 MAX_NUMBER 表示数字的最大值。我们将数组的索引与数字对应起来,索引为数字,数组的值为该数字出现的次数。
接下来,我们遍历数组 arr,对每个数字进行计数,通过 countArr[num]++ 增加对应数字的计数器。
最后,我们再次遍历 countArr 数组,输出每个非零元素的索引和值,即数字和出现的次数。
运行这段代码将输出以下结果:
Number: 1, Count: 3 Number: 2, Count: 3 Number: 3, Count: 3 Number: 4, Count: 1 Number: 5, Count: 1
结果与使用 std::map 相同,表示数字 1、2 和 3 在数组中各自出现了 3 次,而数字 4 和 5 分别只出现了 1 次。
for (int num : arr) {
countArr[num]++;
}这段代码使用的是 C++11 中引入的范围基础循环(Range-based for loop)语法,也称为 foreach 循环。它是一种简化循环遍历容器元素的方式。
在这段代码中,for (int num : arr) 表示对于数组 arr 中的每个元素,将其赋值给变量 num,然后执行循环体中的代码块。循环将遍历整个数组,并依次将数组中的元素赋值给 num,使你能够方便地访问数组中的每个元素。
在每次循环迭代中,countArr[num]++ 将根据当前的 num 值递增 countArr 数组中对应索引的值,实现了对数字出现次数的统计。
这种范围基础循环语法简化了传统的使用索引进行循环的写法,使代码更加简洁和易读。它适用于遍历各种容器,如数组、向量、列表等。

- 上一篇:c++输出数组所有数据
- 下一篇:详细讲解C++的#include <map>
