如何迭代无序映射特定键值?

Posted

技术标签:

【中文标题】如何迭代无序映射特定键值?【英文标题】:How to iterate over an unordered map's specific key's values? 【发布时间】:2021-03-21 22:48:41 【问题描述】:

我有一个带有字符串和字符串向量的无序映射。我想转到一个特定的键并遍历它的所有值。

例如。转到键 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
     
   
 

【问题讨论】:

【参考方案1】:

您不需要 2 个循环来执行此操作。具体来说,寻找密钥的外部循环是不必要的。如果您知道密钥存在,您可以这样做:

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"])
    // ...

【讨论】:

以上是关于如何迭代无序映射特定键值?的主要内容,如果未能解决你的问题,请参考以下文章

如何将Spring Boot RepositoryRestResource映射到特定的URL

Dart 映射,如何根据其键 id 替换 list<map> 中的特定键值?

如何在Scala中访问嵌套映射中的键值

如何将嵌套列表映射到 Python 中的可迭代字典

11.集合

映射和元组