template <class M> pair<iterator, bool> insert_or_assign(const key_type& k, M&& obj); | (1) | (since C++17) |
template <class M> pair<iterator, bool> insert_or_assign(key_type&& k, M&& obj); | (2) | (since C++17) |
template <class M> iterator insert_or_assign(const_iterator hint, const key_type& k, M&& obj); | (3) | (since C++17) |
template <class M> iterator insert_or_assign(const_iterator hint, key_type&& k, M&& obj); | (4) | (since C++17) |
k
already exists in the container, assigns std::forward<M>(obj)
to the mapped_type
corresponding to the key k
. If the key does not exist, inserts the new value as if by insert, constructing it from value_type(k, std::forward<M>(obj))
value_type(std::move(k), std::forward<M>(obj))
No iterators or references are invalidated. If the insertion is successful, pointers and references to the element obtained while it is held in the node handle are invalidated, and pointers and references obtained to that element before it was extracted become valid. (since C++17).
k | - | the key used both to look up and to insert if not found |
hint | - | iterator to the position before which the new element will be inserted |
obj | - | the value to insert or assign |
true
if the insertion took place and false
if the assignment took place. The iterator component is pointing at the element that was inserted or updatedinsert_or_assign
returns more information than operator[]
and does not require default-constructibility of the mapped type.
access or insert specified element (public member function) |
|
(C++11) | access specified element with bounds checking (public member function) |
inserts elements or nodes (since C++17) (public member function) |
|
(C++11) | constructs element in-place (public member function) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/container/map/insert_or_assign