📌  相关文章
📜  程序使用C++中的map查找向量中每个元素的频率(1)

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

使用C++中的map查找向量中每个元素的频率

在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容器可以方便地查找向量中每个元素的频率。这种方法不仅实用,而且简单易懂,容易上手。程序员只需要按照上述步骤来编写程序就可以了。