В соответствии с cppreference функции std::set
и std::map
emplace
возвращают a std::pair<iterator,bool>
, с значением bool
, чтобы сказать if вставка действительно имела место.
Однако emplace_hint
возвращает iterator
либо вставленному элементу, либо существующему элементу в наборе или карте, если вставка не выполнялась. Здесь нет значения bool
.
Есть ли причина для этой разницы в интерфейсе этих подобных функций?
Обновление
Функция insert
возвращает значение bool
только при отсутствии подсказки. Это согласуется с поведением emplace
и emplace_hint
. Возникает вопрос: есть ли причина не возвращать bool
, когда дается подсказка?
Я могу только подумать, что, возможно, есть причина в производительности, потому что пользователь обычно дает подсказку после операции lower_bound
/upper_bound
, поэтому она уверен, что вставка произойдет.