📜  循环遍历 map c++ (1)

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

循环遍历 map c++

在C++语言中,map是一种“关联式数组”,可以将数据存储为键值对的形式。在实际应用中,我们通常需要遍历map,获取其中的每一项数据。

本篇文章将着重介绍如何循环遍历map

遍历map的三种方式
1. 迭代器

使用迭代器可以遍历map中的所有元素。map的迭代器是pair<const Key, T>类型。其中,const Key表示键的类型,T表示值的类型。

下面是一个遍历map的例子:

#include <iostream>
#include <map>

int main()
{
    std::map<std::string, int> my_map = {{"apple", 1}, {"banana", 2}, {"pear", 3}};

    for (auto it = my_map.begin(); it != my_map.end(); ++it)
    {
        std::cout << it->first << ": " << it->second << std::endl;
    }

    return 0;
}

输出:

apple: 1
banana: 2
pear: 3
2. 范围for循环

在 C++11 中,可以使用范围for循环来遍历map中的所有元素。

下面是一个遍历map的例子:

#include <iostream>
#include <map>

int main()
{
    std::map<std::string, int> my_map = {{"apple", 1}, {"banana", 2}, {"pear", 3}};

    for (const auto& p : my_map)
    {
        std::cout << p.first << ": " << p.second << std::endl;
    }

    return 0;
}

输出:

apple: 1
banana: 2
pear: 3
3. for_each()函数

STL 提供了一个for_each()函数,可以遍历map中的所有元素。for_each()函数需要两个参数:map的起始迭代器和结束迭代器,以及一个函数对象(或者函数指针)。

下面是一个遍历map的例子:

#include <iostream>
#include <map>
#include <algorithm>

void print(const std::pair<std::string, int>& p)
{
    std::cout << p.first << ": " << p.second << std::endl;
}

int main()
{
    std::map<std::string, int> my_map = {{"apple", 1}, {"banana", 2}, {"pear", 3}};

    std::for_each(my_map.begin(), my_map.end(), print);

    return 0;
}

输出:

apple: 1
banana: 2
pear: 3
总结

在 C++ 中,我们可以使用迭代器、范围for循环和for_each()函数来遍历map中的所有元素。

需要注意的是,map是一种有序的关联式容器。在遍历时,元素的顺序是按照键的顺序从小到大排列的。