map c++; какое изначальное значение имеют значения map в int
я знаю что по умолчанию в map <int, int> в значении будет лежать 0, и следовательно map[1]++ то значение будет равно 1. Возможно ли это изменить и положить предположим в начальное значение не 0, а -1?
Ответы (1 шт):
Автор решения: Stanislav Volodarskiy
→ Ссылка
Создавать новую вариацию map
или новый тип для значений - это слишком.
В С++ 17 map::try_emplace, а в С++ 11 map::emplace вставляют новый элемент, только если такого ключа в карте не было. Иначе возвращается старый ключ. Код не самый красивый, но эффективный и не очень длинный:
// i - ключ, который обновляется
map.try_emplace(i, -1).first->second++;
// map.emplace(i, -1).first->second++;