object::insert_or_assign
Insert an element or assign to an existing element.
Synopsis
template<
class M>
std::pair< object::iterator, bool >
insert_or_assign(
string_view key,
M&& m);
Description
If the key equal to key
already exists in the container, assigns std::forward<M>(m)
to the mapped_type
corresponding to that key. Otherwise, inserts the as if by insert
, constructing it using value_type(key, std::forward<M>(m))
.
If insertion would result in the new number of elements exceeding capacity()
, a reallocation and a rehashing occur. In that case all iterators and references are invalidated. Otherwise, they are not affected.
Complexity
Constant on average, worst case linear in size()
.
Exception Safety
Strong guarantee. Calls to memory_resource::allocate
may throw.
Return Value
A std::pair
where first
is an iterator to the existing or inserted element, and second
is true
if the insertion took place or false
if the assignment took place.
Parameters
Name | Description |
---|---|
|
The key used for lookup and insertion. |
|
The value to insert or assign. |
Exceptions
Type | Thrown On |
---|---|
|
The size of a key would exceed |