std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::insert_or_assign (3) - Linux Manuals
std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::insert_or_assign: std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::insert_or_assign
Command to display std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::insert_or_assign
manual in Linux: $ man 3 std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::insert_or_assign
NAME
std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::insert_or_assign - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::insert_or_assign
Synopsis
template <class M> (1) (since C++17)
pair<iterator, bool> insert_or_assign(const key_type& k, M&& obj);
template <class M> (2) (since C++17)
pair<iterator, bool> insert_or_assign(key_type&& k, M&& obj);
template <class M> (3) (since C++17)
iterator insert_or_assign(const_iterator hint, const key_type& k, M&& obj);
template <class M> (4) (since C++17)
iterator insert_or_assign(const_iterator hint, key_type&& k, M&& obj);
1,3) If a key equivalent to 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))
2,4) Same as (1,3), except the mapped value is constructed from value_type(std::move(k), std::forward<M>(obj))
If an insertion occurs and results in a rehashing of the container, all iterators are invalidated. Otherwise iterators are not affected. References are not invalidated. Rehashing occurs only if the new number of elements is greater than max_load_factor()*bucket_count().
Parameters
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
Return value
1,2) The bool component is 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 updated
3,4) Iterator pointing at the element that was inserted or updated
Complexity
1,2) Same as for emplace
3,4) Same as for emplace_hint
Notes
insert_or_assign returns more information than operator[] and does not require default-constructibility of the mapped type.
Example
// Run this code
#include <iostream>
#include <unordered_map>
#include <string>
int main()
{
std::unordered_map<std::string, std::string> myMap;
myMap.insert_or_assign("a", "apple" );
myMap.insert_or_assign("b", "bannana" );
myMap.insert_or_assign("c", "cherry" );
myMap.insert_or_assign("c", "clementine");
for (const auto &pair : myMap) {
std::cout << pair.first << " : " << pair.second << '\n';
}
}
Possible output:
c : clementine
a : apple
b : bannana
See also
access or insert specified element
operator[] (public member function)
access specified element with bounds checking
at (public member function)
inserts elements
or nodes
insert (since C++17)
(public member function)
constructs element in-place
emplace (public member function)
Pages related to std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::insert_or_assign
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::insert (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::insert
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::at (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::at
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::begin(size_type), (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::begin(size_type),
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::begin(size_type),std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::cbegin(size_type) (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::begin(size_type),std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::cbegin(size_type)
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::begin, (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::begin,
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::begin,std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::cbegin (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::begin,std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::cbegin
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::bucket (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::bucket
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::bucket_count (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::bucket_count
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::bucket_size (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::bucket_size
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::clear (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::clear
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::contains (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::contains
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::count (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::count
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::emplace (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::emplace
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::emplace_hint (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::emplace_hint
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::empty (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::empty
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::end(size_type), (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::end(size_type),
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::end(size_type),std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::cend(size_type) (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::end(size_type),std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::cend(size_type)
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::end, (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::end,
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::end,std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::cend (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::end,std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::cend
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::equal_range (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::equal_range
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::erase (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::erase
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::extract (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::extract
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::find (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::find
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::get_allocator (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::get_allocator
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::hash_function (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::hash_function
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::key_eq (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::key_eq
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::load_factor (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::load_factor
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::max_bucket_count (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::max_bucket_count
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::max_load_factor (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::max_load_factor
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::max_size (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::max_size
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::merge (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::merge
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::operator= (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::operator=
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::operator[] (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::operator[]
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::rehash (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::rehash
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::reserve (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::reserve
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::size (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::size
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::swap (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::swap
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::try_emplace (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::try_emplace
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::unordered_map (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::unordered_map
- std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::~unordered_map (3) - std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::~unordered_map
- std::unordered_map (3) - std::unordered_map