try_emplace и insert_or_assign
Вопрос
Чем try_emplace и insert_or_assign отличаются от insert у std::map?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
Ответ
insert не трогает существующий ключ. try_emplace(k, args...) тоже не трогает, но и не конструирует значение (аргументы не перемещаются впустую), если ключ уже есть. insert_or_assign(k, v) вставляет или перезаписывает. Оба из C++17.
Разбор
insert не трогает существующий ключ. try_emplace(k, args...) тоже не трогает, но и не конструирует значение (аргументы не перемещаются впустую), если ключ уже есть. insert_or_assign(k, v) вставляет или перезаписывает. Оба из C++17.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.