This answer в this popular question дает идиоматическое использование петли диапазонов для с картой:Почему C++ 11 для диапазона циклов не учитывает итерации карт?
for (auto& kv : myMap) {
// do stuff, where kv.first is the key and kv.second is the value
}
вещь, это обычно бывает, что мы хотим иметь значимые имена для ключа и значения (а не так много для их пары). Это означает, что писать, например:
for (auto& kv : myMap) {
auto planet_name = kv.first;
auto distance_from_sun = kv.second;
// do stuff with planet_name and distance_from_sun
}
и, ну, вы знаете - я не хочу, чтобы написать эти целые три линии, тем более, что я не забочусь о кВ (обычно). Я бы ожидать что-то вроде
for (auto& {planet_name, distance_from_sun} : myMap) {
// do stuff with planet_name and planet_distance_from_sun
}
или
for (tie{auto& planet_name,auto& distance_from_sun} : myMap) {
// do stuff with planet_name and planet_distance_from_sun
}
или какой-либо другой аналогичной конструкции для работы. Если мы можем назначить пары, и если мы сможем строить пары при их установке на картах, почему бы не определить пары в цикле диапазона?
... или, может быть, у C++ 11/14/17 есть какой-то трюк для достижения такого эффекта?
Вы можете быть заинтересованы в [P0144R0] (http://wg21.link/P0144R0). –