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++;
→ Ссылка