3 回答
TA贡献2039条经验 获得超7个赞
容器的每个元素都是a map<K, V>::value_type,这是typedeffor std::pair<const K, V>。因此,在C ++ 17或更高版本中,您可以编写
for (auto& [key, value]: myMap) {
std::cout << key << " has value " << value << std::endl;
}
或作为
for (const auto& [key, value]: myMap) {
std::cout << key << " has value " << value << std::endl;
}
如果您不打算修改值。
在C ++ 11和C ++ 14中,可以使用增强的for循环自行提取每对,然后手动提取键和值:
for (const auto& kv : myMap) {
std::cout << kv.first << " has value " << kv.second << std::endl;
}
如果您需要值的只读视图,也可以考虑标记kv变量const。
TA贡献1848条经验 获得超10个赞
在C ++ 17中,这称为结构化绑定,它允许以下操作:
std::map< foo, bar > testing = { /*...blah...*/ };
for ( const auto& [ k, v ] : testing )
{
std::cout << k << "=" << v << "\n";
}
- 3 回答
- 0 关注
- 1342 浏览
添加回答
举报