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.Requirements: the type
value_typeshall meet theEmplaceConstructiblerequirements from [container.requirements] ISO C++ section.
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.Requirements: the type
value_typeshall meet theEmplaceConstructiblerequirements from [container.requirements] ISO C++ section.
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.Requirements: the type
value_typeshall meet theCopyInsertablerequirements from [container.requirements] ISO C++ Standard section.
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.Requirements: the type
value_typeshall meet theCopyInsertablerequirements from [container.requirements] ISO C++ Standard section.
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.Requirements: the type
value_typeshall meet theMoveInsertablerequirements from [container.requirements] ISO C++ Standard section.
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.Requirements: the type
value_typeshall meet theMoveInsertablerequirements from [container.requirements] ISO C++ Standard section.
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 - nserts 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 SrcCompare> void merge( concurrent_map<Key, T, SrcCompare, Allocator>& source ); template <typename SrcCompare> void merge( concurrent_map<Key, T, SrcCompare, Allocator>&& source ); template <typename SrcCompare> void merge( concurrent_multimap<Key, T, SrcCompare, Allocator>& source ); template <typename SrcCompare> void merge( concurrent_multimap<Key, T, SrcCompare, 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().