Concurrently safe modifiers
Contents
Concurrently safe modifiers#
All methods in this section can be executed concurrently with each other and lookup methods.
Inserting values#
bool insert( const_accessor& result, const key_type& key ); bool insert( accessor& result, const key_type& key );If the
result
accessor is not empty, releases theresult
and attempts to insert the value constructed fromkey, mapped_type()
into the container.Sets the
result
to provide access to the inserted element or to the element with equal key, which was already presented in the container.Requirements:
the
value_type
type must meet theEmplaceConstructible
requirements described in the [container.requirements] section of the ISO C++ Standard.the
mapped_type
type must meet theDefaultConstructible
requirements described in the [defaultconstructible] section of the ISO C++ Standard.Returns:
true
if an element is inserted;false
otherwise.
template <typename K> bool insert( const_accessor& result, const K& key ); template <typename K> bool insert( accessor& result, const K& key );If the
result
accessor is not empty, releases theresult
and attempts to insert the value constructed fromkey, mapped_type()
into the container.Sets the
result
to provide access to the inserted element or to the element with the key, that compares equivalent to the valuekey
, which was already presented in the container.This overload only participates in the overload resolution if:
qualified-id
hash_compare_type::is_transparent
is valid and denotes a type
std::is_constructible<key_type, const K&>::value
istrue
Requirements: the
mapped_type
type must meet theDefaultConstructible
requirements described in the [defaultconstructible] section of the ISO C++ Standard.Returns:
true
if an element is inserted;false
otherwise.
bool insert( const_accessor& result, const value_type& value ); bool insert( accessor& result, const value_type& value );If the
result
accessor is not empty, releases theresult
and attempts to insert the valuevalue
into the container.Sets the
result
to provide access to the inserted element or to the element with equal key, which was already presented in the container.Requirements: the
value_type
type must meet theCopyInsertable
requirements described in the [container.requirements] section of the ISO C++ Standard.Returns:
true
if an element is inserted;false
otherwise.
bool insert( const value_type& value );Attempts to insert the value
value
into the container.Requirements: the
value_type
type must meet theCopyInsertable
requirements described in the [container.requirements] section of the ISO C++ Standard.Returns:
true
if an element is inserted;false
otherwise.
bool insert( const_accessor& result, value_type&& value ); bool insert( accessor& result, value_type&& value );If the
result
accessor is not empty, releases theresult
and attempts to insert the valuevalue
into the container using move semantics.Sets the
result
to provide access to the inserted element or to the element with equal key, which was already presented in the container.
value
is left in a valid, but unspecified state.Requirements: the
value_type
type must meet theMoveInsertable
requirements described in the [container.requirements] section of the ISO C++ Standard.Returns:
true
if an element is inserted;false
otherwise.
bool insert( value_type&& value );Attempts to insert the value
value
into the container using move semantics.Requirements: the
value_type
type must meet theMoveInsertable
requirements described in the [container.requirements] section of the ISO C++ Standard.Returns:
true
if an element is inserted;false
otherwise.
Inserting sequences of elements#
template <typename InputIterator> void insert( InputIterator first, InputIterator last );Attempts to insert all items from the half-open interval
[first, last)
into the container.If the interval
[first, last)
contains multiple elements with equal keys, it is unspecified which element should be inserted.Requirements: the
InputIterator
type must meet the requirements of InputIterator described in the[input.iterators]
section of the ISO C++ Standard.
void insert( std::initializer_list<value_type> init );Equivalent to
insert(init.begin(), init.end())
.
Emplacing elements#
template <typename... Args> bool emplace( const_accessor& result, Args&&... args ); template <typename... Args> bool emplace( accessor& result, Args&&... args );If the
result
accessor is not empty, releases theresult
and attempts to insert an element constructed in-place fromargs
into the container.Sets the
result
to provide access to the inserted element or to the element with equal key, which was already presented in the container.Requirements: the type
value_type
must meet theEmplaceConstructible
requirements described in the [container.requirements] section of the ISO C++ Standard.Returns:
true
if an element is inserted;false
otherwise
template <typename... Args> bool emplace( Args&&... args );Attempts to insert an element constructed in-place from
args
into the container.Requirements: the type
value_type
must meet theEmplaceConstructible
requirements described in the [container.requirements] section of the ISO C++ Standard.Returns:
true
if an element is inserted;false
otherwise
Erasing elements#
bool erase( const key_type& key );If an element with the key equivalent to
key
exists, removes it from the container.Returns:
true
if an element is removed;false
otherwise.
template <typename K> bool erase( const K& key );If an element with the key that compares equivalent to the value
key
exists, removes it from the container.This overload only participates in the overload resolution if qualified-id
hash_compare_type::is_transparent
is valid and denotes a type.Returns:
true
if an element is removed;false
otherwise.
bool erase( const_accessor& item_accessor ); bool erase( accessor& item_accessor );Removes an element owned by
item_accessor
from the container.Requirements:
item_accessor
should not be empty.Returns:
true
if an element is removed by the current thread;false
if it is removed by another thread.