📅  最后修改于: 2023-12-03 15:41:05.275000             🧑  作者: Mango
在C++中,我们可以使用“map”容器来查找向量(或数组)中每个元素的频率。这个容器提供了一个通过键来访问值的机制,其中键和值都可以是任何数据类型。程序员可以用这个容器来方便地计算每个元素在向量中出现的次数。
首先,我们要在程序中包含头文件“map”:
#include <map>
然后,我们可以定义一个map对象来存储每个元素的频率,其中键是元素本身,值是它出现的次数:
std::map<int, int> freq;
上述代码中,“int”代表键和值的数据类型,可以被替换为其他任何类型。
接下来,遍历向量中的所有元素,并使用map容器记录每个元素的频率:
std::vector<int> vec{ 1, 2, 3, 1, 2, 1 };
for (int i = 0; i < vec.size(); i++)
{
freq[vec[i]]++;
}
上述代码中,我们使用“[]”运算符来访问map中的元素,并增加相应的值。如果该元素还不存在于map中,则会自动创建一个键,并将其值初始化为0。
最后,我们可以使用一个循环来输出map中的所有键值对,以查看每个元素的频率:
for (auto const& pair: freq)
{
std::cout << pair.first << " occurs "
<< pair.second << " times." << std::endl;
}
上述代码中,我们使用一个C++11特性“range-based for循环”,遍历map中的所有键值对。其中,每个pair对象包含一个键和一个对应的值,我们可以使用“first”和“second”成员来分别访问它们。
下面是一个完整的示例程序,演示了如何使用map容器来查找向量中每个元素的频率:
#include <iostream>
#include <vector>
#include <map>
int main()
{
// create a vector
std::vector<int> vec{ 1, 2, 3, 1, 2, 1 };
// create a map to store the frequency
std::map<int, int> freq;
// traverse the vector and update the frequency
for (int i = 0; i < vec.size(); i++)
{
freq[vec[i]]++;
}
// print the frequency of each element
for (auto const& pair: freq)
{
std::cout << pair.first << " occurs "
<< pair.second << " times." << std::endl;
}
return 0;
}
输出结果为:
1 occurs 3 times.
2 occurs 2 times.
3 occurs 1 times.
使用C++中的map容器可以方便地查找向量中每个元素的频率。这种方法不仅实用,而且简单易懂,容易上手。程序员只需要按照上述步骤来编写程序就可以了。