3 回答

TA貢獻2039條經驗 獲得超8個贊
容器的每個元素都是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 關注
- 1489 瀏覽
添加回答
舉報