我有一个带有字符串和字符串 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/