STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Types | Public Member Functions | List of all members
Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type > Class Template Reference

The concurrent_unordered_multiset class is an concurrency-safe container that controls a varying-length sequence of elements of type _Key_type. The sequence is represented in a way that enables concurrency-safe append, element access, iterator access and iterator traversal operations. More...

#include <concurrent_unordered_set.h>

Inheritance diagram for Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >:
Concurrency::details::_Concurrent_hash< details::_Concurrent_unordered_set_traits< _Key_type, details::_Hash_compare< _Key_type, _Hasher, _Key_equality >, _Allocator_type, true > > Concurrency::details::_Concurrent_unordered_set_traits< _Key_type, details::_Hash_compare< _Key_type, _Hasher, _Key_equality >, _Allocator_type, true >

Public Types

typedef concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type > _Mytype
 
typedef details::_Hash_compare< _Key_type, _Hasher, _Key_equality > _Key_compare
 
typedef details::_Concurrent_hash< details::_Concurrent_unordered_set_traits< _Key_type, _Key_compare, _Allocator_type, true > > _Mybase
 
typedef _Key_type key_type
 The type of an ordering key. More...
 
typedef _Mybase::value_type value_type
 The type of an element. More...
 
typedef _Hasher hasher
 The type of the hash function. More...
 
typedef _Key_equality key_equal
 The type of the comparison function. More...
 
typedef _Mybase::allocator_type allocator_type
 The type of an allocator for managing storage. More...
 
typedef _Mybase::pointer pointer
 The type of a pointer to an element. More...
 
typedef _Mybase::const_pointer const_pointer
 The type of a constant pointer to an element. More...
 
typedef _Mybase::reference reference
 The type of a reference to an element. More...
 
typedef _Mybase::const_reference const_reference
 The type of a constant reference to an element. More...
 
typedef _Mybase::size_type size_type
 The type of an unsigned distance between two elements. More...
 
typedef _Mybase::difference_type difference_type
 The type of a signed distance between two elements. More...
 
typedef _Mybase::iterator iterator
 The type of an iterator for the controlled sequence. More...
 
typedef _Mybase::const_iterator const_iterator
 The type of a constant iterator for the controlled sequence. More...
 
typedef _Mybase::iterator local_iterator
 The type of a bucket iterator for the controlled sequence. More...
 
typedef _Mybase::const_iterator const_local_iterator
 The type of a constant bucket iterator for the controlled sequence. More...
 
- Public Types inherited from Concurrency::details::_Concurrent_hash< details::_Concurrent_unordered_set_traits< _Key_type, details::_Hash_compare< _Key_type, _Hasher, _Key_equality >, _Allocator_type, true > >
typedef _Concurrent_hash< details::_Concurrent_unordered_set_traits< _Key_type, details::_Hash_compare< _Key_type, _Hasher, _Key_equality >, _Allocator_type, true > > _Mytype
 
typedef _Split_ordered_list< typename details::_Concurrent_unordered_set_traits< _Key_type, details::_Hash_compare< _Key_type, _Hasher, _Key_equality >, _Allocator_type, true >::value_type, typename details::_Concurrent_unordered_set_traits< _Key_type, details::_Hash_compare< _Key_type, _Hasher, _Key_equality >, _Allocator_type, true >::allocator_type_Mylist
 
typedef details::_Concurrent_unordered_set_traits< _Key_type, details::_Hash_compare< _Key_type, _Hasher, _Key_equality >, _Allocator_type, true >::_Key_compare _Key_compare
 
typedef details::_Concurrent_unordered_set_traits< _Key_type, details::_Hash_compare< _Key_type, _Hasher, _Key_equality >, _Allocator_type, true >::_Value_compare _Value_compare
 
typedef details::_Concurrent_unordered_set_traits< _Key_type, details::_Hash_compare< _Key_type, _Hasher, _Key_equality >, _Allocator_type, true >::value_type value_type
 
typedef details::_Concurrent_unordered_set_traits< _Key_type, details::_Hash_compare< _Key_type, _Hasher, _Key_equality >, _Allocator_type, true >::key_type key_type
 
typedef details::_Concurrent_unordered_set_traits< _Key_type, details::_Hash_compare< _Key_type, _Hasher, _Key_equality >, _Allocator_type, true >::allocator_type allocator_type
 
typedef allocator_type::pointer pointer
 
typedef allocator_type::const_pointer const_pointer
 
typedef allocator_type::reference reference
 
typedef allocator_type::const_reference const_reference
 
typedef allocator_type::size_type size_type
 
typedef allocator_type::difference_type difference_type
 
typedef std::conditional< std::is_same< key_type, value_type >::value, typename _Mylist::const_iterator, typename _Mylist::iterator >::type iterator
 
typedef _Mylist::const_iterator const_iterator
 
typedef iterator local_iterator
 
typedef const_iterator const_local_iterator
 
typedef _Mylist::_Nodeptr _Nodeptr
 
typedef _Mylist::_Full_iterator _Full_iterator
 
typedef _Mylist::_Full_const_iterator _Full_const_iterator
 
- Public Types inherited from Concurrency::details::_Concurrent_unordered_set_traits< _Key_type, details::_Hash_compare< _Key_type, _Hasher, _Key_equality >, _Allocator_type, true >
enum  
 
typedef _Key_type value_type
 
typedef _Key_type key_type
 
typedef details::_Hash_compare< _Key_type, _Hasher, _Key_equality > _Key_compare
 
typedef _Allocator_type::template rebind< value_type >::other allocator_type
 
typedef _Key_compare _Value_compare
 

Public Member Functions

 concurrent_unordered_multiset (size_type _Number_of_buckets=8, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &_Allocator=allocator_type())
 Constructs a concurrent unordered multiset. More...
 
 concurrent_unordered_multiset (const allocator_type &_Allocator)
 Constructs a concurrent unordered multiset. More...
 
template<typename _Iterator >
 concurrent_unordered_multiset (_Iterator _First, _Iterator _Last, size_type _Number_of_buckets=8, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &_Allocator=allocator_type())
 Constructs a concurrent unordered multiset. More...
 
 concurrent_unordered_multiset (const concurrent_unordered_multiset &_Uset)
 Constructs a concurrent unordered multiset. More...
 
 concurrent_unordered_multiset (const concurrent_unordered_multiset &_Uset, const allocator_type &_Allocator)
 Constructs a concurrent unordered multiset. More...
 
 concurrent_unordered_multiset (concurrent_unordered_multiset &&_Uset)
 Constructs a concurrent unordered multiset. More...
 
concurrent_unordered_multisetoperator= (const concurrent_unordered_multiset &_Uset)
 Assigns the contents of another concurrent_unordered_multiset object to this one. This method is not concurrency-safe. More...
 
concurrent_unordered_multisetoperator= (concurrent_unordered_multiset &&_Uset)
 Assigns the contents of another concurrent_unordered_multiset object to this one. This method is not concurrency-safe. More...
 
iterator insert (const value_type &_Value)
 Adds elements to the concurrent_unordered_multiset object. More...
 
iterator insert (const_iterator _Where, const value_type &_Value)
 Adds elements to the concurrent_unordered_multiset object. More...
 
template<class _Iterator >
void insert (_Iterator _First, _Iterator _Last)
 Adds elements to the concurrent_unordered_multiset object. More...
 
template<class _Valty >
iterator insert (_Valty &&_Value)
 Adds elements to the concurrent_unordered_multiset object. More...
 
template<class _Valty >
std::enable_if<!std::is_same< const_iterator, typename std::remove_reference< _Valty >::type >::value, iterator >::type insert (const_iterator _Where, _Valty &&_Value)
 Adds elements to the concurrent_unordered_multiset object. More...
 
iterator unsafe_erase (const_iterator _Where)
 Removes elements from the concurrent_unordered_multiset at specified positions. This method is not concurrency-safe. More...
 
iterator unsafe_erase (const_iterator _First, const_iterator _Last)
 Removes elements from the concurrent_unordered_multiset at specified positions. This method is not concurrency-safe. More...
 
size_type unsafe_erase (const key_type &_Keyval)
 Removes elements from the concurrent_unordered_multiset at specified positions. This method is not concurrency-safe. More...
 
void swap (concurrent_unordered_multiset &_Uset)
 Swaps the contents of two concurrent_unordered_multiset objects. This method is not concurrency-safe. More...
 
hasher hash_function () const
 Returns the stored hash function object. More...
 
key_equal key_eq () const
 The stored equality comparison function object. More...
 
- Public Member Functions inherited from Concurrency::details::_Concurrent_hash< details::_Concurrent_unordered_set_traits< _Key_type, details::_Hash_compare< _Key_type, _Hasher, _Key_equality >, _Allocator_type, true > >
 _Concurrent_hash (size_type _Number_of_buckets=_Initial_bucket_number, const _Key_compare &_Parg=_Key_compare(), const allocator_type &_Allocator=allocator_type())
 
 _Concurrent_hash (const _Concurrent_hash &_Right, const allocator_type &_Allocator)
 
 _Concurrent_hash (const _Concurrent_hash &_Right)
 
 _Concurrent_hash (_Concurrent_hash &&_Right)
 
_Concurrent_hashoperator= (const _Concurrent_hash &_Right)
 
_Concurrent_hashoperator= (_Concurrent_hash &&_Right)
 
 ~_Concurrent_hash ()
 
allocator_type get_allocator () const
 Returns the stored allocator object for this concurrent container. This method is concurrency safe. More...
 
bool empty () const
 Tests whether no elements are present. This method is concurrency safe. More...
 
size_type size () const
 Returns the number of elements in this concurrent container. This method is concurrency safe. More...
 
size_type max_size () const
 Returns the maximum size of the concurrent container, determined by the allocator. This method is concurrency safe. More...
 
iterator begin ()
 Returns an iterator pointing to the first element in the concurrent container. This method is concurrency safe. More...
 
const_iterator begin () const
 Returns an iterator pointing to the first element in the concurrent container. This method is concurrency safe. More...
 
iterator end ()
 Returns an iterator pointing to the location succeeding the last element in the concurrent container. This method is concurrency safe. More...
 
const_iterator end () const
 Returns a const_iterator pointing to the location succeeding the last element in the concurrent container. This method is concurrency safe. More...
 
const_iterator cbegin () const
 Returns a const iterator pointing to the first element in the concurrent container. This method is concurrency safe. More...
 
const_iterator cend () const
 Returns a const iterator pointing to the location succeeding the last element in the concurrent container. This method is concurrency safe. More...
 
iterator unsafe_erase (const_iterator _Where)
 Removes elements from the container at specified positions. This method is not concurrency-safe. More...
 
iterator unsafe_erase (const_iterator _First, const_iterator _Last)
 Removes elements from the container at specified positions. This method is not concurrency-safe. More...
 
size_type unsafe_erase (const key_type &_Keyval)
 Removes elements from the container at specified positions. This method is not concurrency-safe. More...
 
void swap (_Concurrent_hash &_Right)
 Swaps the contents of two concurrent containers. This function is not concurrency safe. More...
 
void clear ()
 Erases all the elements in the concurrent container. This function is not concurrency safe. More...
 
iterator find (const key_type &_Keyval)
 Finds an element that matches a specified key. This function is concurrency safe. More...
 
const_iterator find (const key_type &_Keyval) const
 Finds an element that matches a specified key. This function is concurrency safe. More...
 
size_type count (const key_type &_Keyval) const
 Counts the number of elements matching a specified key. This function is concurrency safe. More...
 
std::pair< iterator, iteratorequal_range (const key_type &_Keyval)
 Finds a range that matches a specified key. This function is concurrency safe. More...
 
std::pair< const_iterator, const_iteratorequal_range (const key_type &_Keyval) const
 Finds a range that matches a specified key. This function is concurrency safe. More...
 
size_type unsafe_bucket_count () const
 Returns the current number of buckets in this container. More...
 
size_type unsafe_max_bucket_count () const
 Returns the maximum number of buckets in this container. More...
 
size_type unsafe_bucket_size (size_type _Bucket)
 Returns the number of items in a specific bucket of this container. More...
 
size_type unsafe_bucket (const key_type &_Keyval) const
 Returns the bucket index that a specific key maps to in this container. More...
 
local_iterator unsafe_begin (size_type _Bucket)
 Returns an iterator to the first element in this container for a specific bucket. More...
 
const_local_iterator unsafe_begin (size_type _Bucket) const
 Returns an iterator to the first element in this container for a specific bucket. More...
 
local_iterator unsafe_end (size_type _Bucket)
 Returns an iterator to the last element in this container for a specific bucket. More...
 
const_local_iterator unsafe_end (size_type _Bucket) const
 Returns an iterator to the last element in this container for a specific bucket. More...
 
const_local_iterator unsafe_cbegin (size_type) const
 Returns an iterator to the first element in this container for a specific bucket. More...
 
const_local_iterator unsafe_cend (size_type) const
 Returns an iterator to the first element in this container for a specific bucket. More...
 
float load_factor () const
 Computes and returns the current load factor of the container. The load factor is the number of elements in the container divided by the number of buckets. More...
 
float max_load_factor () const
 Gets or sets the maximum load factor of the container. The maximum load factor is the largest number of elements than can be in any bucket before the container grows its internal table. More...
 
void max_load_factor (float _Newmax)
 Gets or sets the maximum load factor of the container. The maximum load factor is the largest number of elements than can be in any bucket before the container grows its internal table. More...
 
void rehash (size_type _Buckets)
 Rebuilds the hash table. More...
 
- Public Member Functions inherited from Concurrency::details::_Concurrent_unordered_set_traits< _Key_type, details::_Hash_compare< _Key_type, _Hasher, _Key_equality >, _Allocator_type, true >
 _Concurrent_unordered_set_traits ()
 
 _Concurrent_unordered_set_traits (const details::_Hash_compare< _Key_type, _Hasher, _Key_equality > &_Traits)
 

Additional Inherited Members

- Static Public Member Functions inherited from Concurrency::details::_Concurrent_hash< details::_Concurrent_unordered_set_traits< _Key_type, details::_Hash_compare< _Key_type, _Hasher, _Key_equality >, _Allocator_type, true > >
static size_type __cdecl _Segment_index_of (size_type _Index)
 
static size_type _Segment_base (size_type _K)
 
static size_type _Segment_size (size_type _K)
 
- Static Public Member Functions inherited from Concurrency::details::_Concurrent_unordered_set_traits< _Key_type, details::_Hash_compare< _Key_type, _Hasher, _Key_equality >, _Allocator_type, true >
static const _Key_type & _Key_function (const value_type &_Value)
 
- Public Attributes inherited from Concurrency::details::_Concurrent_unordered_set_traits< _Key_type, details::_Hash_compare< _Key_type, _Hasher, _Key_equality >, _Allocator_type, true >
details::_Hash_compare< _Key_type, _Hasher, _Key_equality > _M_comparator
 
- Static Public Attributes inherited from Concurrency::details::_Concurrent_hash< details::_Concurrent_unordered_set_traits< _Key_type, details::_Hash_compare< _Key_type, _Hasher, _Key_equality >, _Allocator_type, true > >
static const size_type _Initial_bucket_number
 
static const size_type _Initial_bucket_load
 
static size_type const _Pointers_per_table
 
- Protected Member Functions inherited from Concurrency::details::_Concurrent_hash< details::_Concurrent_unordered_set_traits< _Key_type, details::_Hash_compare< _Key_type, _Hasher, _Key_equality >, _Allocator_type, true > >
std::pair< iterator, bool_Insert (_ValTy &&_Value)
 
void _Insert (_Iterator _First, _Iterator _Last)
 

Detailed Description

template<typename _Key_type, typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
class Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >

The concurrent_unordered_multiset class is an concurrency-safe container that controls a varying-length sequence of elements of type _Key_type. The sequence is represented in a way that enables concurrency-safe append, element access, iterator access and iterator traversal operations.

Template Parameters
_Key_typeThe key type.
_HasherThe hash function object type. This argument is optional and the default value is std::hash<_Key_type >.
_Key_equalityThe equality comparison function object type. This argument is optional and the default value is std::equal_to<_Key_type >.
_Allocator_typeThe type that represents the stored allocator object that encapsulates details about the allocation and deallocation of memory for the concurrent vector. This argument is optional and the default value is std::allocator<_Key_type >.

For detailed information on the concurrent_unordered_multiset class, see Parallel Containers and Objects.

See also
Parallel Containers and Objects

Member Typedef Documentation

template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
typedef details::_Hash_compare<_Key_type, _Hasher, _Key_equality> Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::_Key_compare
template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
typedef details::_Concurrent_hash< details::_Concurrent_unordered_set_traits<_Key_type, _Key_compare, _Allocator_type, true> > Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::_Mybase
template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
typedef concurrent_unordered_multiset<_Key_type, _Hasher, _Key_equality, _Allocator_type> Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::_Mytype
template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
typedef _Mybase::allocator_type Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::allocator_type

The type of an allocator for managing storage.

template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
typedef _Mybase::const_iterator Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::const_iterator

The type of a constant iterator for the controlled sequence.

template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
typedef _Mybase::const_iterator Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::const_local_iterator

The type of a constant bucket iterator for the controlled sequence.

template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
typedef _Mybase::const_pointer Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::const_pointer

The type of a constant pointer to an element.

template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
typedef _Mybase::const_reference Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::const_reference

The type of a constant reference to an element.

template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
typedef _Mybase::difference_type Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::difference_type

The type of a signed distance between two elements.

template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
typedef _Hasher Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::hasher

The type of the hash function.

template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
typedef _Mybase::iterator Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::iterator

The type of an iterator for the controlled sequence.

template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
typedef _Key_equality Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::key_equal

The type of the comparison function.

template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
typedef _Key_type Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::key_type

The type of an ordering key.

template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
typedef _Mybase::iterator Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::local_iterator

The type of a bucket iterator for the controlled sequence.

template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
typedef _Mybase::pointer Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::pointer

The type of a pointer to an element.

template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
typedef _Mybase::reference Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::reference

The type of a reference to an element.

template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
typedef _Mybase::size_type Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::size_type

The type of an unsigned distance between two elements.

template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
typedef _Mybase::value_type Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::value_type

The type of an element.

Constructor & Destructor Documentation

template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::concurrent_unordered_multiset ( size_type  _Number_of_buckets = 8,
const hasher _Hasher = hasher(),
const key_equal _Key_equality = key_equal(),
const allocator_type _Allocator = allocator_type() 
)
inlineexplicit

Constructs a concurrent unordered multiset.

Parameters
_Number_of_bucketsThe initial number of buckets for this unordered multiset.
_HasherThe hash function for this unordered multiset.
_Key_equalityThe equality comparison function for this unordered multiset.
_AllocatorThe allocator for this unordered multiset.

All constructors store an allocator object _Allocator and initialize the unordered multiset.

The first constructor specifies an empty initial multiset and explicitly specifies the number of buckets, hash function, equality function and allocator type to be used.

The second constructor specifies an allocator for the unordered multiset.

The third constructor specifies values supplied by the iterator range [_Begin , _End ).

The fourth and fifth constructors specify a copy of the concurrent unordered multiset _Uset .

The last constructor specifies a move of the concurrent unordered multiset _Uset .

817  : _Mybase(_Number_of_buckets, _Key_compare(_Hasher, _Key_equality), _Allocator)
818  {
819  this->rehash(_Number_of_buckets);
820  }
details::_Hash_compare< _Key_type, _Hasher, _Key_equality > _Key_compare
Definition: concurrent_unordered_set.h:697
details::_Concurrent_hash< details::_Concurrent_unordered_set_traits< _Key_type, _Key_compare, _Allocator_type, true > > _Mybase
Definition: concurrent_unordered_set.h:698
template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::concurrent_unordered_multiset ( const allocator_type _Allocator)
inline

Constructs a concurrent unordered multiset.

Parameters
_AllocatorThe allocator for this unordered multiset.

All constructors store an allocator object _Allocator and initialize the unordered multiset.

The first constructor specifies an empty initial multiset and explicitly specifies the number of buckets, hash function, equality function and allocator type to be used.

The second constructor specifies an allocator for the unordered multiset.

The third constructor specifies values supplied by the iterator range [_Begin , _End ).

The fourth and fifth constructors specify a copy of the concurrent unordered multiset _Uset .

The last constructor specifies a move of the concurrent unordered multiset _Uset .

838  : _Mybase(8, _Key_compare(), _Allocator)
839  {
840  }
details::_Hash_compare< _Key_type, _Hasher, _Key_equality > _Key_compare
Definition: concurrent_unordered_set.h:697
details::_Concurrent_hash< details::_Concurrent_unordered_set_traits< _Key_type, _Key_compare, _Allocator_type, true > > _Mybase
Definition: concurrent_unordered_set.h:698
template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
template<typename _Iterator >
Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::concurrent_unordered_multiset ( _Iterator  _First,
_Iterator  _Last,
size_type  _Number_of_buckets = 8,
const hasher _Hasher = hasher(),
const key_equal _Key_equality = key_equal(),
const allocator_type _Allocator = allocator_type() 
)
inline

Constructs a concurrent unordered multiset.

Template Parameters
_IteratorThe type of the input iterator.
Parameters
_BeginThe position of the first element in the range of elements to be copied.
_EndThe position of the first element beyond the range of elements to be copied.
_Number_of_bucketsThe initial number of buckets for this unordered multiset.
_HasherThe hash function for this unordered multiset.
_Key_equalityThe equality comparison function for this unordered multiset.
_AllocatorThe allocator for this unordered multiset.

All constructors store an allocator object _Allocator and initialize the unordered multiset.

The first constructor specifies an empty initial multiset and explicitly specifies the number of buckets, hash function, equality function and allocator type to be used.

The second constructor specifies an allocator for the unordered multiset.

The third constructor specifies values supplied by the iterator range [_Begin , _End ).

The fourth and fifth constructors specify a copy of the concurrent unordered multiset _Uset .

The last constructor specifies a move of the concurrent unordered multiset _Uset .

879  : _Mybase(_Number_of_buckets, _Key_compare(), allocator_type())
880  {
881  this->rehash(_Number_of_buckets);
882  for (; _First != _Last; ++_First)
883  {
884  this->_Insert(*_First);
885  }
886  }
details::_Hash_compare< _Key_type, _Hasher, _Key_equality > _Key_compare
Definition: concurrent_unordered_set.h:697
_Mybase::allocator_type allocator_type
The type of an allocator for managing storage.
Definition: concurrent_unordered_set.h:728
details::_Concurrent_hash< details::_Concurrent_unordered_set_traits< _Key_type, _Key_compare, _Allocator_type, true > > _Mybase
Definition: concurrent_unordered_set.h:698
_FwdIt _Last
Definition: algorithm:1936
template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::concurrent_unordered_multiset ( const concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type > &  _Uset)
inline

Constructs a concurrent unordered multiset.

Parameters
_UsetThe source concurrent_unordered_multiset object to copy elements from.

All constructors store an allocator object _Allocator and initialize the unordered multiset.

The first constructor specifies an empty initial multiset and explicitly specifies the number of buckets, hash function, equality function and allocator type to be used.

The second constructor specifies an allocator for the unordered multiset.

The third constructor specifies values supplied by the iterator range [_Begin , _End ).

The fourth and fifth constructors specify a copy of the concurrent unordered multiset _Uset .

The last constructor specifies a move of the concurrent unordered multiset _Uset .

904  : _Mybase(_Uset)
905  {
906  }
details::_Concurrent_hash< details::_Concurrent_unordered_set_traits< _Key_type, _Key_compare, _Allocator_type, true > > _Mybase
Definition: concurrent_unordered_set.h:698
template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::concurrent_unordered_multiset ( const concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type > &  _Uset,
const allocator_type _Allocator 
)
inline

Constructs a concurrent unordered multiset.

Parameters
_UsetThe source concurrent_unordered_multiset object to copy elements from.
_AllocatorThe allocator for this unordered multiset.

All constructors store an allocator object _Allocator and initialize the unordered multiset.

The first constructor specifies an empty initial multiset and explicitly specifies the number of buckets, hash function, equality function and allocator type to be used.

The second constructor specifies an allocator for the unordered multiset.

The third constructor specifies values supplied by the iterator range [_Begin , _End ).

The fourth and fifth constructors specify a copy of the concurrent unordered multiset _Uset .

The last constructor specifies a move of the concurrent unordered multiset _Uset .

927  : _Mybase(_Uset, _Allocator)
928  {
929  }
details::_Concurrent_hash< details::_Concurrent_unordered_set_traits< _Key_type, _Key_compare, _Allocator_type, true > > _Mybase
Definition: concurrent_unordered_set.h:698
template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::concurrent_unordered_multiset ( concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type > &&  _Uset)
inline

Constructs a concurrent unordered multiset.

Parameters
_UsetThe source concurrent_unordered_multiset object to move elements from.

All constructors store an allocator object _Allocator and initialize the unordered multiset.

The first constructor specifies an empty initial multiset and explicitly specifies the number of buckets, hash function, equality function and allocator type to be used.

The second constructor specifies an allocator for the unordered multiset.

The third constructor specifies values supplied by the iterator range [_Begin , _End ).

The fourth and fifth constructors specify a copy of the concurrent unordered multiset _Uset .

The last constructor specifies a move of the concurrent unordered multiset _Uset .

947  : _Mybase(std::move(_Uset))
948  {
949  }
details::_Concurrent_hash< details::_Concurrent_unordered_set_traits< _Key_type, _Key_compare, _Allocator_type, true > > _Mybase
Definition: concurrent_unordered_set.h:698
constexpr remove_reference< _Ty >::type && move(_Ty &&_Arg) _NOEXCEPT
Definition: type_traits:1349

Member Function Documentation

template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
hasher Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::hash_function ( ) const
inline

Returns the stored hash function object.

Returns
The stored hash function object.
1231  {
1232  return this->_M_comparator._M_hash_object;
1233  }
details::_Hash_compare< _Key_type, _Hasher, _Key_equality > _M_comparator
Definition: concurrent_unordered_set.h:67
template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
iterator Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::insert ( const value_type _Value)
inline

Adds elements to the concurrent_unordered_multiset object.

Parameters
_ValueThe value to be inserted.
Returns
An iterator pointing to the insertion location.

The first member function inserts the element _Value in the controlled sequence, then returns the iterator that designates the inserted element.

The second member function returns insert(_Value ), using _Where as a starting place within the controlled sequence to search for the insertion point.

The third member function inserts the sequence of element values from the range [_First , _Last ).

The last two member functions behave the same as the first two, except that _Value is used to construct the inserted value.

1012  {
1013  return this->_Insert(_Value).first;
1014  }
_In_ _Value
Definition: corecrt_wstdlib.h:65
template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
iterator Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::insert ( const_iterator  _Where,
const value_type _Value 
)
inline

Adds elements to the concurrent_unordered_multiset object.

Parameters
_WhereThe starting location to search for an insertion point.
_ValueThe value to be inserted.
Returns
An iterator pointing to the insertion location.

The first member function inserts the element _Value in the controlled sequence, then returns the iterator that designates the inserted element.

The second member function returns insert(_Value ), using _Where as a starting place within the controlled sequence to search for the insertion point.

The third member function inserts the sequence of element values from the range [_First , _Last ).

The last two member functions behave the same as the first two, except that _Value is used to construct the inserted value.

1040  {
1041  // Current implementation ignores the hint. The method is provided for compatibility with unordered_multiset.
1042  return this->_Insert(_Value).first;
1043  }
_In_ _Value
Definition: corecrt_wstdlib.h:65
template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
template<class _Iterator >
void Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::insert ( _Iterator  _First,
_Iterator  _Last 
)
inline

Adds elements to the concurrent_unordered_multiset object.

Template Parameters
_IteratorThe iterator type used for insertion.
Parameters
_FirstThe beginning of the range to insert.
_LastThe end of the range to insert.

The first member function inserts the element _Value in the controlled sequence, then returns the iterator that designates the inserted element.

The second member function returns insert(_Value ), using _Where as a starting place within the controlled sequence to search for the insertion point.

The third member function inserts the sequence of element values from the range [_First , _Last ).

The last two member functions behave the same as the first two, except that _Value is used to construct the inserted value.

1070  {
1071  this->_Insert(_First, _Last);
1072  }
_FwdIt _Last
Definition: algorithm:1936
template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
template<class _Valty >
iterator Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::insert ( _Valty &&  _Value)
inline

Adds elements to the concurrent_unordered_multiset object.

Template Parameters
_ValtyThe type of the value inserted.
Parameters
_ValueThe value to be inserted.
Returns
An iterator pointing to the insertion location.

The first member function inserts the element _Value in the controlled sequence, then returns the iterator that designates the inserted element.

The second member function returns insert(_Value ), using _Where as a starting place within the controlled sequence to search for the insertion point.

The third member function inserts the sequence of element values from the range [_First , _Last ).

The last two member functions behave the same as the first two, except that _Value is used to construct the inserted value.

1099  {
1100  return this->_Insert(std::forward<_Valty>(_Value)).first;
1101  }
_In_ _Value
Definition: corecrt_wstdlib.h:65
template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
template<class _Valty >
std::enable_if<!std::is_same<const_iterator, typename std::remove_reference<_Valty>::type>::value, iterator>::type Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::insert ( const_iterator  _Where,
_Valty &&  _Value 
)
inline

Adds elements to the concurrent_unordered_multiset object.

Template Parameters
_ValtyThe type of the value inserted.
Parameters
_WhereThe starting location to search for an insertion point.
_ValueThe value to be inserted.
Returns
An iterator pointing to the insertion location.

The first member function inserts the element _Value in the controlled sequence, then returns the iterator that designates the inserted element.

The second member function returns insert(_Value ), using _Where as a starting place within the controlled sequence to search for the insertion point.

The third member function inserts the sequence of element values from the range [_First , _Last ).

The last two member functions behave the same as the first two, except that _Value is used to construct the inserted value.

1133  {
1134  // Current implementation ignores the hint. The method is provided for compatibility with unordered_multiset.
1135  return this->_Insert(std::forward<_Valty>(_Value)).first;
1136  }
_In_ _Value
Definition: corecrt_wstdlib.h:65
template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
key_equal Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::key_eq ( ) const
inline

The stored equality comparison function object.

Returns
The stored equality comparison function object.
1243  {
1244  return this->_M_comparator._M_key_compare_object;
1245  }
details::_Hash_compare< _Key_type, _Hasher, _Key_equality > _M_comparator
Definition: concurrent_unordered_set.h:67
template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
concurrent_unordered_multiset& Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::operator= ( const concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type > &  _Uset)
inline

Assigns the contents of another concurrent_unordered_multiset object to this one. This method is not concurrency-safe.

Parameters
_UsetThe source concurrent_unordered_multiset object.
Returns
A reference to this concurrent_unordered_multiset object.

After erasing any existing elements in a concurrent unordered multiset, operator= either copies or moves the contents of _Uset into the concurrent unordered multiset.

966  {
967  _Mybase::operator=(_Uset);
968  return (*this);
969  }
_Concurrent_hash & operator=(const _Concurrent_hash &_Right)
Definition: internal_concurrent_hash.h:148
template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
concurrent_unordered_multiset& Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::operator= ( concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type > &&  _Uset)
inline

Assigns the contents of another concurrent_unordered_multiset object to this one. This method is not concurrency-safe.

Parameters
_UsetThe source concurrent_unordered_multiset object.
Returns
A reference to this concurrent_unordered_multiset object.

After erasing any existing elements in a concurrent unordered multiset, operator= either copies or moves the contents of _Uset into the concurrent unordered multiset.

986  {
988  return (*this);
989  }
constexpr remove_reference< _Ty >::type && move(_Ty &&_Arg) _NOEXCEPT
Definition: type_traits:1349
_Concurrent_hash & operator=(const _Concurrent_hash &_Right)
Definition: internal_concurrent_hash.h:148
template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
void Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::swap ( concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type > &  _Uset)
inline

Swaps the contents of two concurrent_unordered_multiset objects. This method is not concurrency-safe.

Parameters
_UsetThe concurrent_unordered_multiset object to swap with.
1219  {
1220  _Mybase::swap(_Uset);
1221  }
void swap(_Concurrent_hash &_Right)
Swaps the contents of two concurrent containers. This function is not concurrency safe...
Definition: internal_concurrent_hash.h:424
template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
iterator Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::unsafe_erase ( const_iterator  _Where)
inline

Removes elements from the concurrent_unordered_multiset at specified positions. This method is not concurrency-safe.

Parameters
_WhereThe iterator position to erase from.

The first member function removes the element pointed to by _Where . The second member function removes the elements in the range [_Begin , _End ).

The third member function removes the elements in the range delimited by concurrent_unordered_multiset::equal_range Method(_Keyval).

Returns
The first two member functions return an iterator that designates the first element remaining beyond any elements removed, or concurrent_unordered_multiset::end Method() if no such element exists. The third member function returns the number of elements it removes.
1157  {
1158  return _Mybase::unsafe_erase(_Where);
1159  }
iterator unsafe_erase(const_iterator _Where)
Removes elements from the container at specified positions. This method is not concurrency-safe.
Definition: internal_concurrent_hash.h:350
template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
iterator Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::unsafe_erase ( const_iterator  _First,
const_iterator  _Last 
)
inline

Removes elements from the concurrent_unordered_multiset at specified positions. This method is not concurrency-safe.

Parameters
_BeginThe position of the first element in the range of elements to be erased.
_EndThe position of the first element beyond the range of elements to be erased.

The first member function removes the element pointed to by _Where . The second member function removes the elements in the range [_Begin , _End ).

The third member function removes the elements in the range delimited by concurrent_unordered_multiset::equal_range Method(_Keyval).

Returns
The first two member functions return an iterator that designates the first element remaining beyond any elements removed, or concurrent_unordered_multiset::end Method() if no such element exists. The third member function returns the number of elements it removes.
1183  {
1184  return _Mybase::unsafe_erase(_First, _Last);
1185  }
iterator unsafe_erase(const_iterator _Where)
Removes elements from the container at specified positions. This method is not concurrency-safe.
Definition: internal_concurrent_hash.h:350
_FwdIt _Last
Definition: algorithm:1936
template<typename _Key_type , typename _Hasher = std::hash<_Key_type>, typename _Key_equality = std::equal_to<_Key_type>, typename _Allocator_type = std::allocator<_Key_type>>
size_type Concurrency::concurrent_unordered_multiset< _Key_type, _Hasher, _Key_equality, _Allocator_type >::unsafe_erase ( const key_type _Keyval)
inline

Removes elements from the concurrent_unordered_multiset at specified positions. This method is not concurrency-safe.

Parameters
_KeyvalThe key value to erase.

The first member function removes the element pointed to by _Where . The second member function removes the elements in the range [_Begin , _End ).

The third member function removes the elements in the range delimited by concurrent_unordered_multiset::equal_range Method(_Keyval).

Returns
The first two member functions return an iterator that designates the first element remaining beyond any elements removed, or concurrent_unordered_multiset::end Method() if no such element exists. The third member function returns the number of elements it removes.
1207  {
1208  return _Mybase::unsafe_erase(_Keyval);
1209  }
iterator unsafe_erase(const_iterator _Where)
Removes elements from the container at specified positions. This method is not concurrency-safe.
Definition: internal_concurrent_hash.h:350

The documentation for this class was generated from the following file: