|
typedef rbtree< Key, eastl::pair< const Key, T >, Compare, Allocator, eastl::use_first< eastl::pair< const Key, T > >, true, false > | base_type |
|
typedef multimap< Key, T, Compare, Allocator > | this_type |
|
typedef base_type::size_type | size_type |
|
typedef base_type::key_type | key_type |
|
typedef T | mapped_type |
|
typedef base_type::value_type | value_type |
|
typedef base_type::node_type | node_type |
|
typedef base_type::iterator | iterator |
|
typedef base_type::const_iterator | const_iterator |
|
typedef base_type::allocator_type | allocator_type |
|
typedef base_type::insert_return_type | insert_return_type |
|
typedef base_type::extract_key | extract_key |
|
typedef ptrdiff_t | difference_type |
|
typedef eastl_size_t | size_type |
|
typedef Key | key_type |
|
typedef eastl::pair< const Key, T > | 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, eastl::pair< const Key, T >, eastl::less< Key >, EASTLAllocatorType, eastl::use_first< eastl::pair< const Key, T > >, bMutableIterators, bUniqueKeys > | this_type |
|
typedef rb_base< Key, eastl::pair< const Key, T >, eastl::less< Key >, eastl::use_first< eastl::pair< const Key, T > >, bUniqueKeys, this_type > | base_type |
|
typedef integral_constant< bool, bUniqueKeys > | has_unique_keys_type |
|
typedef base_type::extract_key | extract_key |
|
typedef ExtractKey | extract_key |
|
|
| multimap (const allocator_type &allocator=EASTL_MULTIMAP_DEFAULT_ALLOCATOR) |
|
| multimap (const Compare &compare, const allocator_type &allocator=EASTL_MULTIMAP_DEFAULT_ALLOCATOR) |
|
| multimap (const this_type &x) |
|
| multimap (this_type &&x) |
|
| multimap (this_type &&x, const allocator_type &allocator) |
|
| multimap (std::initializer_list< value_type > ilist, const Compare &compare=Compare(), const allocator_type &allocator=EASTL_MULTIMAP_DEFAULT_ALLOCATOR) |
|
template<typename Iterator > |
| multimap (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) |
|
insert_return_type | insert (const Key &key) |
|
value_compare | value_comp () const |
|
size_type | erase (const Key &key) |
|
size_type | count (const Key &key) const |
|
eastl::pair< iterator, iterator > | equal_range (const Key &key) |
|
eastl::pair< const_iterator, const_iterator > | equal_range (const Key &key) const |
|
eastl::pair< iterator, iterator > | equal_range_small (const Key &key) |
|
eastl::pair< const_iterator, const_iterator > | equal_range_small (const Key &key) 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 |
|
template<class P , class = typename eastl::enable_if<eastl::is_constructible<value_type, P&&>::value>::type> |
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) |
|
template<typename InputIterator > |
void | insert (InputIterator first, InputIterator last) |
|
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) |
|
| 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) |
|
| rb_base (const Compare &compare) |
|
|
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).
|
|
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) |
|
| 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 |
|
template<typename Key, typename T, typename Compare = eastl::less<Key>, typename Allocator = EASTLAllocatorType>
class eastl::multimap< Key, T, Compare, Allocator >
multimap
Implements a canonical multimap.
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.
Pool allocation If you want to make a custom memory pool for a multimap container, your pool needs to contain items of type multimap::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 multimap<Widget, int, less<Widget>, MemoryPool> WidgetMap; // Delare your WidgetMap type. MemoryPool myPool(sizeof(WidgetMap::node_type), 100); // Make a pool of 100 Widget nodes. WidgetMap myMap(&myPool); // Create a map that uses the pool.