21xrx.com
2024-12-23 01:36:28 Monday
登录
文章检索 我的文章 写文章
C++如何遍历unordered_map?
2023-07-02 14:50:39 深夜i     --     --
C++ unordered_map 遍历

C++中的unordered_map是一种容器类型,用于存储键值对。它的特点是元素的顺序是不确定的,因此需要一种方法来遍历它。

遍历unordered_map的方法有很多种,下面介绍几种常用的方法。

方法一:使用auto关键字和C++11中的范围for循环


#include <unordered_map>

#include <iostream>

int main()

{

  std::unordered_map<std::string, int> mymap = { 1, "banana", 3};

  for(auto& x: mymap)

    std::cout << x.first << ": " << x.second << std::endl;

  

  return 0;

}

在上面的代码中,auto关键字会根据元素类型自动推断出迭代器的类型。范围for循环被用来遍历unordered_map中的每个元素。每个元素是一个std::pair,它具有两个属性,即first和second。在本例中,first是键,second是值。

方法二:使用unordered_map的迭代器


#include <unordered_map>

#include <iostream>

int main()

{

  std::unordered_map<std::string, int> mymap = { 1, 2, "cherry"};

  for(auto it = mymap.begin(); it != mymap.end(); ++it)

    std::cout << it->first << ": " << it->second << std::endl;

  

  return 0;

}

在上面的代码中,使用迭代器来遍历unordered_map。it->first和it->second分别指向当前迭代器所指向元素的键和值。

方法三:使用std::for_each函数


#include <unordered_map>

#include <iostream>

#include <algorithm>

int main()

{

  std::unordered_map<std::string, int> mymap = {"apple", "banana", "cherry"};

  std::for_each(mymap.begin(), mymap.end(), [](std::pair<std::string, int> x)

    std::cout << x.first << ": " << x.second << std::endl;

  );

  return 0;

}

在上面的代码中,使用std::for_each函数来遍历unordered_map。该函数接受一个范围和一个函数对象,该函数对象将在指定范围内的每个元素上调用。在本例中,函数对象是一个lambda函数,它接受一个std::pair类型的参数并输出其first和second属性。

总结:

无论使用哪种方法,都可以方便地遍历unordered_map。C++11中的范围for循环是最简单的方法,而使用迭代器和std::for_each函数可以提供更大的灵活性。选择使用哪种方法取决于实际情况和个人偏好。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复