26 Containers library [containers]

26.4 Associative containers [associative]

26.4.4 Class template map [map]

26.4.4.4 map modifiers [map.modifiers]

template <class P> pair<iterator, bool> insert(P&& x); template <class P> iterator insert(const_iterator position, P&& x);

Effects: Первая форма эквивалентна return emplace(std​::​forward<P>(x)). Вторая форма эквивалентна return emplace_­hint(position, std​::​forward<P>(x)).

Remarks: Эти подписи не должны участвовать в разрешении перегрузки , если is_­constructible_­v<value_­type, P&&> не true.

template <class... Args> pair<iterator, bool> try_emplace(const key_type& k, Args&&... args); template <class... Args> iterator try_emplace(const_iterator hint, const key_type& k, Args&&... args);

Requires: value_­type должны быть EmplaceConstructible в map с piecewise_­construct, forward_­as_­tuple(k), forward_­as_­tuple(std​::​forward<Args>(args)...).

Effects: Если карта уже содержит элемент, ключ которого эквивалентен k, эффекта не будет. В противном случае вставляет объект типа , value_­type построенный с piecewise_­construct, forward_­as_­tuple(k), forward_­as_­tuple(std​::​forward<Args>(args)...).

Returns: В первой перегрузке bool компонент возвращенной пары есть true тогда и только тогда, когда вставка имела место. Возвращенный итератор указывает на элемент карты, ключ которого эквивалентен k.

Complexity: То же, что emplace и emplace_­hintсоответственно.

template <class... Args> pair<iterator, bool> try_emplace(key_type&& k, Args&&... args); template <class... Args> iterator try_emplace(const_iterator hint, key_type&& k, Args&&... args);

Requires: value_­type должны быть EmplaceConstructible в map с piecewise_­construct, forward_­as_­tuple(std​::​move(k)), forward_­as_­tuple(std​::​forward<Args>(args)...).

Effects: Если карта уже содержит элемент, ключ которого эквивалентен k, эффекта не будет. В противном случае вставляет объект типа , value_­type построенный с piecewise_­construct, forward_­as_­tuple(std​::​move(k)), forward_­as_­tuple(std​::​forward<Args>(args)...).

Returns: В первой перегрузке bool компонент возвращенной пары есть true тогда и только тогда, когда вставка имела место. Возвращенный итератор указывает на элемент карты, ключ которого эквивалентен k.

Complexity: То же, что emplace и emplace_­hintсоответственно.

template <class M> pair<iterator, bool> insert_or_assign(const key_type& k, M&& obj); template <class M> iterator insert_or_assign(const_iterator hint, const key_type& k, M&& obj);

Requires: is_­assignable_­v<mapped_­type&, M&&> будет true. value_­type должны быть EmplaceConstructible в map с k, forward<M>(obj).

Effects: Если карта уже содержит элемент e , ключ эквивалентен k, правопреемник std​::​forward<M>(obj) в e.second. В противном случае вставляет объект типа , value_­type построенный с k, std​::​forward<M>(obj).

Returns: В первой перегрузке bool компонент возвращенной пары есть true тогда и только тогда, когда вставка имела место. Возвращенный итератор указывает на элемент карты, ключ которого эквивалентен k.

Complexity: То же, что emplace и emplace_­hintсоответственно.

template <class M> pair<iterator, bool> insert_or_assign(key_type&& k, M&& obj); template <class M> iterator insert_or_assign(const_iterator hint, key_type&& k, M&& obj);

Requires: is_­assignable_­v<mapped_­type&, M&&> будет true. value_­type должны быть EmplaceConstructible в map с move(k), forward<M>(obj).

Effects: Если карта уже содержит элемент e , ключ эквивалентен k, правопреемник std​::​forward<M>(obj) в e.second. В противном случае вставляет объект типа , value_­type построенный с std​::​​move(k), std​::​forward<M>(obj).

Returns: В первой перегрузке bool компонент возвращенной пары есть true тогда и только тогда, когда вставка имела место. Возвращенный итератор указывает на элемент карты, ключ которого эквивалентен k.

Complexity: То же, что emplace и emplace_­hintсоответственно.