Nugget
|
#include <set.h>
Public Types | |
typedef rbtree< Key, Key, Compare, Allocator, eastl::use_self< Key >, false, false > | base_type |
typedef multiset< Key, Compare, Allocator > | this_type |
typedef base_type::size_type | size_type |
typedef base_type::value_type | value_type |
typedef base_type::iterator | iterator |
typedef base_type::const_iterator | const_iterator |
typedef base_type::reverse_iterator | reverse_iterator |
typedef base_type::const_reverse_iterator | const_reverse_iterator |
typedef base_type::allocator_type | allocator_type |
typedef Compare | value_compare |
Public Types inherited from eastl::rbtree< Key, Key, eastl::less< Key >, EASTLAllocatorType, eastl::use_self< Key >, false, false > | |
typedef ptrdiff_t | difference_type |
typedef eastl_size_t | size_type |
typedef Key | key_type |
typedef Key | value_type |
typedef rbtree_node< value_type > | node_type |
typedef value_type & | reference |
typedef const value_type & | const_reference |
typedef value_type * | pointer |
typedef const value_type * | const_pointer |
typedef type_select< bMutableIterators, rbtree_iterator< value_type, value_type *, value_type & >, rbtree_iterator< value_type, const value_type *, const value_type & > >::type | iterator |
typedef rbtree_iterator< value_type, const value_type *, const value_type & > | const_iterator |
typedef eastl::reverse_iterator< iterator > | reverse_iterator |
typedef eastl::reverse_iterator< const_iterator > | const_reverse_iterator |
typedef EASTLAllocatorType | allocator_type |
typedef eastl::less< Key > | key_compare |
typedef type_select< bUniqueKeys, eastl::pair< iterator, bool >, iterator >::type | insert_return_type |
typedef rbtree< Key, Key, eastl::less< Key >, EASTLAllocatorType, eastl::use_self< Key >, bMutableIterators, bUniqueKeys > | this_type |
typedef rb_base< Key, Key, eastl::less< Key >, eastl::use_self< Key >, bUniqueKeys, this_type > | base_type |
typedef integral_constant< bool, bUniqueKeys > | has_unique_keys_type |
typedef base_type::extract_key | extract_key |
Public Types inherited from eastl::rb_base< Key, Value, Compare, ExtractKey, bUniqueKeys, RBTree > | |
typedef ExtractKey | extract_key |
Public Member Functions | |
multiset (const allocator_type &allocator=EASTL_MULTISET_DEFAULT_ALLOCATOR) | |
multiset (const Compare &compare, const allocator_type &allocator=EASTL_MULTISET_DEFAULT_ALLOCATOR) | |
multiset (const this_type &x) | |
multiset (this_type &&x) | |
multiset (this_type &&x, const allocator_type &allocator) | |
multiset (std::initializer_list< value_type > ilist, const Compare &compare=Compare(), const allocator_type &allocator=EASTL_MULTISET_DEFAULT_ALLOCATOR) | |
template<typename Iterator > | |
multiset (Iterator itBegin, Iterator itEnd) | |
this_type & | operator= (const this_type &x) |
this_type & | operator= (std::initializer_list< value_type > ilist) |
this_type & | operator= (this_type &&x) |
value_compare | value_comp () const |
size_type | erase (const Key &k) |
iterator | erase (const_iterator position) |
iterator | erase (const_iterator first, const_iterator last) |
reverse_iterator | erase (const_reverse_iterator position) |
reverse_iterator | erase (const_reverse_iterator first, const_reverse_iterator last) |
size_type | count (const Key &k) const |
eastl::pair< iterator, iterator > | equal_range (const Key &k) |
eastl::pair< const_iterator, const_iterator > | equal_range (const Key &k) const |
eastl::pair< iterator, iterator > | equal_range_small (const Key &k) |
eastl::pair< const_iterator, const_iterator > | equal_range_small (const Key &k) const |
iterator | begin () EA_NOEXCEPT |
const_iterator | begin () const EA_NOEXCEPT |
iterator | end () EA_NOEXCEPT |
const_iterator | end () const EA_NOEXCEPT |
iterator | find (const key_type &key) |
const_iterator | find (const key_type &key) const |
iterator | lower_bound (const key_type &key) |
const_iterator | lower_bound (const key_type &key) const |
iterator | upper_bound (const key_type &key) |
const_iterator | upper_bound (const key_type &key) const |
Public Member Functions inherited from eastl::rbtree< Key, Key, eastl::less< Key >, EASTLAllocatorType, eastl::use_self< Key >, false, false > | |
rbtree (const allocator_type &allocator) | |
rbtree (const eastl::less< Key > &compare, const allocator_type &allocator=EASTL_RBTREE_DEFAULT_ALLOCATOR) | |
rbtree (const this_type &x) | |
rbtree (this_type &&x) | |
rbtree (this_type &&x, const allocator_type &allocator) | |
rbtree (InputIterator first, InputIterator last, const eastl::less< Key > &compare, const allocator_type &allocator=EASTL_RBTREE_DEFAULT_ALLOCATOR) | |
rbtree (InputIterator first, InputIterator last, const C &compare, const allocator_type &allocator) | |
const allocator_type & | get_allocator () const EA_NOEXCEPT |
allocator_type & | get_allocator () EA_NOEXCEPT |
void | set_allocator (const allocator_type &allocator) |
const key_compare & | key_comp () const |
key_compare & | key_comp () |
this_type & | operator= (const this_type &x) |
this_type & | operator= (std::initializer_list< value_type > ilist) |
this_type & | operator= (this_type &&x) |
void | swap (this_type &x) |
iterator | begin () EA_NOEXCEPT |
const_iterator | begin () const EA_NOEXCEPT |
const_iterator | cbegin () const EA_NOEXCEPT |
iterator | end () EA_NOEXCEPT |
const_iterator | end () const EA_NOEXCEPT |
const_iterator | cend () const EA_NOEXCEPT |
reverse_iterator | rbegin () EA_NOEXCEPT |
const_reverse_iterator | rbegin () const EA_NOEXCEPT |
const_reverse_iterator | crbegin () const EA_NOEXCEPT |
reverse_iterator | rend () EA_NOEXCEPT |
const_reverse_iterator | rend () const EA_NOEXCEPT |
const_reverse_iterator | crend () const EA_NOEXCEPT |
bool | empty () const EA_NOEXCEPT |
size_type | size () const EA_NOEXCEPT |
insert_return_type | emplace (Args &&... args) |
iterator | emplace_hint (const_iterator position, Args &&... args) |
eastl::pair< iterator, bool > | try_emplace (const key_type &k, Args &&... args) |
eastl::pair< iterator, bool > | try_emplace (key_type &&k, Args &&... args) |
iterator | try_emplace (const_iterator position, const key_type &k, Args &&... args) |
iterator | try_emplace (const_iterator position, key_type &&k, Args &&... args) |
eastl::pair< typename rbtree< K, V, C, A, E, bM, bU >::iterator, bool > | try_emplace (const key_type &key, Args &&... args) |
eastl::pair< typename rbtree< K, V, C, A, E, bM, bU >::iterator, bool > | try_emplace (key_type &&key, Args &&... args) |
insert_return_type | insert (P &&otherValue) |
iterator | insert (const_iterator hint, value_type &&value) |
insert_return_type | insert (const value_type &value) |
iterator | insert (const_iterator position, const value_type &value) |
void | insert (std::initializer_list< value_type > ilist) |
void | insert (InputIterator first, InputIterator last) |
pair< iterator, bool > | insert_or_assign (const key_type &k, M &&obj) |
pair< iterator, bool > | insert_or_assign (key_type &&k, M &&obj) |
iterator | insert_or_assign (const_iterator hint, const key_type &k, M &&obj) |
iterator | insert_or_assign (const_iterator hint, key_type &&k, M &&obj) |
eastl::pair< typename rbtree< K, V, C, A, E, bM, bU >::iterator, bool > | insert_or_assign (const key_type &k, M &&obj) |
eastl::pair< typename rbtree< K, V, C, A, E, bM, bU >::iterator, bool > | insert_or_assign (key_type &&k, M &&obj) |
iterator | erase (const_iterator position) |
iterator | erase (const_iterator first, const_iterator last) |
reverse_iterator | erase (const_reverse_iterator position) |
reverse_iterator | erase (const_reverse_iterator first, const_reverse_iterator last) |
void | erase (const key_type *first, const key_type *last) |
void | clear () |
void | reset_lose_memory () |
iterator | find (const key_type &key) |
const_iterator | find (const key_type &key) const |
iterator | find_as (const U &u, Compare2 compare2) |
const_iterator | find_as (const U &u, Compare2 compare2) const |
iterator | lower_bound (const key_type &key) |
const_iterator | lower_bound (const key_type &key) const |
iterator | upper_bound (const key_type &key) |
const_iterator | upper_bound (const key_type &key) const |
bool | validate () const |
int | validate_iterator (const_iterator i) const |
eastl::pair< typename rbtree< K, V, C, A, E, bM, bU >::iterator, bool > | DoInsertValue (true_type, Args &&... args) |
Public Member Functions inherited from eastl::rb_base< Key, Value, Compare, ExtractKey, bUniqueKeys, RBTree > | |
rb_base (const Compare &compare) | |
Additional Inherited Members | |
Public Attributes inherited from eastl::rbtree< Key, Key, eastl::less< Key >, EASTLAllocatorType, eastl::use_self< Key >, false, false > | |
rbtree_node_base | mAnchor |
size_type | mnSize |
This node acts as end() and its mpLeft points to begin(), and mpRight points to rbegin() (the last node on the right). | |
allocator_type | mAllocator |
Stores the count of nodes in the tree (not counting the anchor node). | |
Protected Member Functions inherited from eastl::rbtree< Key, Key, eastl::less< Key >, EASTLAllocatorType, eastl::use_self< Key >, false, false > | |
node_type * | DoAllocateNode () |
void | DoFreeNode (node_type *pNode) |
node_type * | DoCreateNodeFromKey (const key_type &key) |
node_type * | DoCreateNode (Args &&... args) |
node_type * | DoCreateNode (const value_type &value) |
node_type * | DoCreateNode (value_type &&value) |
node_type * | DoCreateNode (const node_type *pNodeSource, node_type *pNodeParent) |
node_type * | DoCopySubtree (const node_type *pNodeSource, node_type *pNodeDest) |
void | DoNukeSubtree (node_type *pNode) |
eastl::pair< iterator, bool > | DoInsertValue (true_type, Args &&... args) |
iterator | DoInsertValue (false_type, Args &&... args) |
eastl::pair< iterator, bool > | DoInsertValue (true_type, value_type &&value) |
iterator | DoInsertValue (false_type, value_type &&value) |
iterator | DoInsertValueImpl (node_type *pNodeParent, bool bForceToLeft, const key_type &key, Args &&... args) |
iterator | DoInsertValueImpl (node_type *pNodeParent, bool bForceToLeft, const key_type &key, node_type *pNodeNew) |
eastl::pair< iterator, bool > | DoInsertKey (true_type, const key_type &key) |
iterator | DoInsertKey (false_type, const key_type &key) |
iterator | DoInsertKey (true_type, const_iterator position, const key_type &key) |
iterator | DoInsertKey (false_type, const_iterator position, const key_type &key) |
iterator | DoInsertValueHint (true_type, const_iterator position, Args &&... args) |
iterator | DoInsertValueHint (false_type, const_iterator position, Args &&... args) |
iterator | DoInsertValueHint (true_type, const_iterator position, value_type &&value) |
iterator | DoInsertValueHint (false_type, const_iterator position, value_type &&value) |
iterator | DoInsertKeyImpl (node_type *pNodeParent, bool bForceToLeft, const key_type &key) |
node_type * | DoGetKeyInsertionPositionUniqueKeys (bool &canInsert, const key_type &key) |
node_type * | DoGetKeyInsertionPositionNonuniqueKeys (const key_type &key) |
node_type * | DoGetKeyInsertionPositionUniqueKeysHint (const_iterator position, bool &bForceToLeft, const key_type &key) |
node_type * | DoGetKeyInsertionPositionNonuniqueKeysHint (const_iterator position, bool &bForceToLeft, const key_type &key) |
Protected Member Functions inherited from eastl::rb_base_compare_ebo< Compare, bool > | |
rb_base_compare_ebo (const Compare &compare) | |
Compare & | get_compare () |
const Compare & | get_compare () const |
template<typename T > | |
bool | compare (const T &lhs, const T &rhs) |
template<typename T > | |
bool | compare (const T &lhs, const T &rhs) const |
multiset
Implements a canonical multiset.
The large majority of the implementation of this class is found in the rbtree base class. We control the behaviour of rbtree via template parameters.
See notes above in 'set' regarding multable iterators.
Pool allocation If you want to make a custom memory pool for a multiset container, your pool needs to contain items of type multiset::node_type. So if you have a memory pool that has a constructor that takes the size of pool items and the count of pool items, you would do this (assuming that MemoryPool implements the Allocator interface): typedef multiset<Widget, less<Widget>, MemoryPool> WidgetSet; // Delare your WidgetSet type. MemoryPool myPool(sizeof(WidgetSet::node_type), 100); // Make a pool of 100 Widget nodes. WidgetSet mySet(&myPool); // Create a map that uses the pool.
|
inline |
equal_range_small This is a special version of equal_range which is optimized for the case of there being few or no duplicated keys in the tree.