C ++ имеет много способов взаимодействия со значениями карты без явного вызова map::find
. operator[]
позволяет получить доступ к значению, по умолчанию создавая его, если оно не существует. insert_or_assign
из C ++ 17 предоставляет способ сделать то, что делает operator[]
, за исключением необходимости иметь конструктор по умолчанию. try_emplace
в C ++ 17 будет создавать-конструировать значение, если ключ отсутствует, но ничего не делает, если там уже есть значение.
Но ни в одной версии C ++ нет такого метода, как "try_assign", где назначение не происходит, если ключ уже существует. Так что вам придется сначала явно найти его.