c++ - 如何迭代无序映射的特定键的值?

标签 c++ vector unordered-map

我有一个带有字符串和字符串 vector 的无序映射。我想转到一个特定的键并迭代它的所有值。

例如。转到键 400 并迭代 1、2 和 3。

{
    400 -> [1,2,3],
    200 -> [],
    13 -> [10,30]
}
std::unordered_map<std::string, std::vector<std::string>> mymap;
myKey = 400; 
for(auto elem: mymap){
if(elem.first == myKey){
     for(auto elem2: elem.first.size()){
       //do stuff here
     }
   }
 }

最佳答案

您不需要 2 个循环来执行此操作。具体来说,寻找 key 的外循环是不必要的。如果您知道 key 存在,您可以简单地执行以下操作:

for (auto const & item : mymap["400"])
  // ...

如果你不确定key是否存在,可以这样写:

if (auto it = mymap.find("400");
    it != mymap.end())
  for (auto const & item : it->second)
    // ...

或者从 C++20 开始,只需:

if (mymap.contains("400"))
  for (auto const & item : mymap["400"])
    // ...

关于c++ - 如何迭代无序映射的特定键的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66738376/

相关文章:

JAVA 使用 .compareTo 对 vector 进行排序并填充另一个 vector

c++ - 在读/写中使用 C++11 unordered_map 的最有效方法

java - 在 C++ 中无效使用范围运算符

c++ - API 稳定的方式自动链接到 Debian 中的 MySQL 或 MariaDB 以实现向后兼容性

c++ - 推导模板参数顺序?

c++ - 二维 vector 类型转换

c++ - std::unordered_map 的桶数意外增长

c++ - MSVC2015 中 SFINAE 成员检测的错误输出

c++ - 如何在 C++ 中将字符串传递给 const char*?

c++ - 在清除之前检查一个 vector ?