Concurrently safe modifiers¶
All member functions in this section can be performed concurrently with each other, lookup methods and while traversing the container.
Emplacing elements¶
template <typename... Args> std::pair<iterator, bool> emplace( Args&&... args )Inserts an element ,constructed in-place from
argsinto the container.Returns:
std::pair<iterator, bool>whereiteratorpoints to the inserted element. Boolean value is alwaystrue.
template <typename... Args> iterator emplace_hint( const_iterator hint, Args&&... args )Inserts an element ,constructed in-place from
argsinto the container.Optionally uses the parameter
hintas a suggestion to where the node should be placed.Returns: an
iteratorto the inserted element.
Inserting values¶
std::pair<iterator, bool> insert( const value_type& value )Inserts the value
valueinto the container.Returns:
std::pair<iterator, bool>whereiteratorpoints to the inserted element. Boolean value is alwaystrue.
iterator insert( const_iterator hint, const value_type& other )Inserts the value
valueinto the container.Optionally uses the parameter
hintas a suggestion to where the element should be placed.Returns: an
iteratorto the inserted element.
template <typename P> std::pair<iterator, bool> insert( P&& value )Equivalent to
emplace(std::forward<P>(value)).This overload only participates in overload resolution if
std::is_constructible<value_type, P&&>::valueistrue.
template <typename P> iterator insert( const_iterator hint, P&& value )Equivalent to
emplace_hint(hint, std::forward<P>(value)).This overload only participates in overload resolution if
std::is_constructible<value_type, P&&>::valueistrue.
std::pair<iterator, bool> insert( value_type&& value )Inserts the value
valueinto the container using move semantics.
valueis left in a valid, but unspecified state.Returns:
std::pair<iterator, bool>whereiteratorpoints to the inserted element. Boolean value is alwaystrue.
iterator insert( const_iterator hint, value_type&& other )Inserts the value
valueinto the container using move semantics.Optionally uses the parameter
hintas a suggestion to where the element should be placed.
valueis left in a valid, but unspecified state.Returns: an
iteratorto the inserted element.
Inserting sequences of elements¶
template <typename InputIterator> void insert( InputIterator first, InputIterator last )Inserts all items from the half-open interval
[first, last)into the container.Requirements: the type
InputIteratormust meet the requirements of InputIterator from[input.iterators]ISO C++ Standard section.
void insert( std::initializer_list<value_type> init )Equivalent to
insert(init.begin(), init.end()).
Inserting nodes¶
std::pair<iterator, bool> insert( node_type&& nh )If the node handle
nhis empty, does nothing.Otherwise - inserts the node, owned by
nhinto the container.
nhis left in an empty state.No copy or move constructors of
value_typeare performed.The behavior is undefined if
nhis not empty andget_allocator() != nh.get_allocator().Returns:
std::pair<iterator, bool>whereiteratorpoints to the inserted element. Boolean value is alwaystrue.
iterator insert( const_iterator hint, node_type&& nh )If the node handle
nhis empty, does nothing.Otherwise - inserts the node, owned by
nhinto the container.Optionally uses the parameter
hintas a suggestion to where the node should be placed.
nhis left in an empty state.No copy or move constructors of
value_typeare performed.The behavior is undefined if
nhis not empty andget_allocator() != nh.get_allocator().Returns: an iterator pointing to the inserted element.
Merging containers¶
template <typename SrcHash, typename SrcKeyEqual> void merge( concurrent_unordered_map<Key, T, SrcHash, SrcKeyEqual, Allocator>& source ); template <typename SrcHash, typename SrcKeyEqual> void merge( concurrent_unordered_map<Key, T, SrcHash, SrcKeyEqual, Allocator>&& source ); template <typename SrcHash, typename SrcKeyEqual> void merge( concurrent_unordered_multimap<Key, T, SrcHash, SrcKeyEqual, Allocator>& source ); template <typename SrcHash, typename SrcKeyEqual> void merge( concurrent_unordered_multimap<Key, T, SrcHash, SrcKeyEqual, Allocator>&& source );Transfers all elements from
sourceto*this.No copy or move constructors of
value_typeare performed.The behavior is undefined if
get_allocator() != source.get_allocator().