c++统计数组中每个元素的出现次数
作者:野牛程序员:2024-07-11 15:22:48 C++阅读 2882
c++统计数组中每个元素的出现次数
在C++中,可以使用std::map来统计数组中每个元素的出现次数。以下是一个示例代码:
#include <iostream>
#include <map>
#include <vector>
void count_elements(const std::vector<int>& arr) {
std::map<int, int> element_counts;
// 统计元素出现次数
for (int elem : arr) {
element_counts[elem]++;
}
// 输出元素及其出现次数
std::cout << "元素 频次" << std::endl;
for (const auto& pair : element_counts) {
std::cout << pair.first << " " << pair.second << std::endl;
}
}
int main() {
std::vector<int> array = {1, 2, 2, 3, 3, 3, 4, 4, 4, 4};
count_elements(array);
return 0;
}在这个示例中,count_elements函数接受一个std::vector<int>类型的数组,并使用std::map来记录每个元素的出现次数。main函数中定义了一个示例数组并调用count_elements函数来统计并输出每个元素的频次。
方法二:
#include <iostream>
#include <unordered_map>
#include <vector>
void count_elements(const std::vector<int>& arr) {
std::unordered_map<int, int> element_counts;
// 统计元素出现次数
for (int elem : arr) {
element_counts[elem]++;
}
// 输出元素及其出现次数
std::cout << "元素 频次" << std::endl;
for (const auto& pair : element_counts) {
std::cout << pair.first << " " << pair.second << std::endl;
}
}
int main() {
std::vector<int> array = {1, 2, 2, 3, 3, 3, 4, 4, 4, 4};
count_elements(array);
return 0;
}如果不使用std::map或std::unordered_map,可以通过手动实现一个排序和计数的方式来统计数组中每个元素的出现次数。以下是一个示例代码:
#include <iostream>
#include <vector>
#include <algorithm>
void count_elements(std::vector<int>& arr) {
// 先对数组进行排序
std::sort(arr.begin(), arr.end());
// 遍历排序后的数组并计数
int current_element = arr[0];
int count = 1;
std::cout << "元素 频次" << std::endl;
for (size_t i = 1; i < arr.size(); ++i) {
if (arr[i] == current_element) {
count++;
} else {
std::cout << current_element << " " << count << std::endl;
current_element = arr[i];
count = 1;
}
}
// 输出最后一个元素的计数
std::cout << current_element << " " << count << std::endl;
}
int main() {
std::vector<int> array = {1, 2, 2, 3, 3, 3, 4, 4, 4, 4};
count_elements(array);
return 0;
}在这个示例中,count_elements函数首先对输入数组进行排序,然后遍历排序后的数组,统计每个元素的出现次数并输出。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

- 上一篇:c统计数组中每个元素的出现次数
- 下一篇:C语言中加法和赋值谁优先
