Карты организованы по ключу, поэтому если не выполнять итерации по каждому элементу, сделать это невозможно.
Если вы ищете look_for
, вы можете использовать стандартную библиотеку std::find_if
:
auto it = std::find_if(map.begin(),
map.end(),
[&look_for](const auto& kv_pair) {
return kv_pair.second == look_for;
});
if (it != map.end()) {
auto key = it->first;
// ...
} else {
// Value not found
// ...
}
Также можно использовать ручной цикл (std::find_if
часто считается более хорошим, но здесь это может быть излишним)
for (const auto& kv_pair : map)
if (kv_pair.second == look_for)
return kv_pair.first;
// If you reach this, the value isn't in your map