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
args
into the container.Returns:
std::pair<iterator, bool>
, whereiterator
points 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
args
into the container.Optionally uses the parameter
hint
as a suggestion to where the node should be placed.Returns: an
iterator
to the inserted element.
Inserting values#
std::pair<iterator, bool> insert( const value_type& value )Inserts the value
value
into the container.Returns:
std::pair<iterator, bool>
, whereiterator
points to the inserted element. Boolean value is alwaystrue
.
iterator insert( const_iterator hint, const value_type& other )Inserts the value
value
into the container.Optionally uses the parameter
hint
as a suggestion to where the element should be placed.Returns: an
iterator
to 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&&>::value
istrue
.
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&&>::value
istrue
.
std::pair<iterator, bool> insert( value_type&& value )Inserts the value
value
into the container using move semantics.
value
is left in a valid, but unspecified state.Returns:
std::pair<iterator, bool>
whereiterator
points to the inserted element. Boolean value is alwaystrue
.
iterator insert( const_iterator hint, value_type&& other )Inserts the value
value
into the container using move semantics.Optionally uses the parameter
hint
as a suggestion to where the element should be placed.
value
is left in a valid, but unspecified state.Returns: an
iterator
to 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
InputIterator
must meet the requirements of InputIterator from the[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
nh
is empty, does nothing.Otherwise, inserts the node owned by
nh
into the container.
nh
is left in an empty state.No copy or move constructors of
value_type
are performed.The behavior is undefined if
nh
is not empty andget_allocator() != nh.get_allocator()
.Returns:
std::pair<iterator, bool>
, whereiterator
points to the inserted element. Boolean value is alwaystrue
.
iterator insert( const_iterator hint, node_type&& nh )If the node handle
nh
is empty, does nothing.Otherwise, inserts the node owned by
nh
into the container.Optionally uses the parameter
hint
as a suggestion to where the node should be placed.
nh
is left in an empty state.No copy or move constructors of
value_type
are performed.The behavior is undefined if
nh
is 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
source
to*this
.No copy or move constructors of
value_type
are performed.The behavior is undefined if
get_allocator() != source.get_allocator()
.