Вставить или обновить в unordered_map без использования конструктора по умолчанию - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть std::unordered_map, к которому я хочу добавить пару ключ-значение.Если ключ еще не существует, я хочу добавить его с заданным значением.Если ключ уже существует, я хочу, чтобы значение было обновлено.

Стандартный совет здесь, по-видимому, заключается в использовании operator[].Но для этого требуется, чтобы тип значения карты был конструируемым по умолчанию.Я хочу избежать предоставления конструктора по умолчанию.Что мне делать?

1 Ответ

0 голосов
/ 07 декабря 2018

Вы должны использовать insert_or_assign (C ++ 17)

Как указано в cppreference , в этом случае вам не нужно иметь конструктивные объекты по умолчанию:

insert_or_assign возвращает больше информации, чем оператор [], и не требует возможности построения по умолчанию сопоставляемого типа.

...