📅  最后修改于: 2023-12-03 15:09:52.342000             🧑  作者: Mango
在C++语言中,map
是一种“关联式数组”,可以将数据存储为键值对的形式。在实际应用中,我们通常需要遍历map
,获取其中的每一项数据。
本篇文章将着重介绍如何循环遍历map
。
map
的三种方式使用迭代器可以遍历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
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
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
是一种有序的关联式容器。在遍历时,元素的顺序是按照键的顺序从小到大排列的。