📌  相关文章
📜  c++ 数组计数频率 - C++ (1)

📅  最后修改于: 2023-12-03 15:29:52.752000             🧑  作者: Mango

C++ 数组计数频率

在C++中,可以通过数组来统计一个序列中每个元素出现的次数。本文将介绍如何使用数组来实现这个功能。

基本思路

首先需定义一个与序列元素最大值相等的数组,然后遍历整个序列,将每个元素在数组中对应位置的值加1,最终得到每个元素出现的次数。

以下是一个基本的实现:

int freq[100];

for (int i = 0; i < n; i++) {
    freq[arr[i]]++;
}

其中,n 表示序列长度,arr 表示序列数组。

使用 unordered_map

上述方法只适用于序列元素较少的情况,如需处理亿万级别的数据集,数组大小将会变得极大,严重影响程序性能。此时,可以使用 STL 中的 unordered_map 来代替数组。

unordered_map 是一种基于哈希表实现的关联容器,可以实现快速的插入、查找和删除操作。

以下是使用 unordered_map 实现计数功能的代码:

#include <unordered_map>

unordered_map<int, int> freq;

for (int i = 0; i < n; i++) {
    freq[arr[i]]++;
}
使用 map

如果需要按键值对计数结果进行排序,并且数据量较小,则可以使用 STL 中的 map 容器。

map 是一种基于红黑树实现的关联容器,插入、删除和查找操作的时间复杂度均为 O(log n)。

以下是使用 map 实现计数功能的代码:

#include <map>

map<int, int> freq;

for (int i = 0; i < n; i++) {
    freq[arr[i]]++;
}
结束语

本文介绍了使用数组、unordered_map 和 map 三种方式来计数序列中每个元素出现的次数。在实际问题中,需要根据数据规模、时间效率和空间资源等方面的要求来选择合适的实现方式。