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>