【问题标题】: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
     }
   }
 }

【问题讨论】:

    标签: c++ vector unordered-map


    【解决方案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"])
        // ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-25
      • 2021-03-23
      • 2011-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-29
      • 1970-01-01
      相关资源
      最近更新 更多