Nugget
Public Types | Public Member Functions | List of all members
eastl::set< Key, Compare, Allocator > Class Template Reference

#include <set.h>

Inheritance diagram for eastl::set< Key, Compare, Allocator >:
Inheritance graph
[legend]
Collaboration diagram for eastl::set< Key, Compare, Allocator >:
Collaboration graph
[legend]

Public Types

typedef rbtree< Key, Key, Compare, Allocator, eastl::use_self< Key >, false, true > base_type
 
typedef set< 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, true >
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< iteratorreverse_iterator
 
typedef eastl::reverse_iterator< const_iteratorconst_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_typebase_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

 set (const allocator_type &allocator=EASTL_SET_DEFAULT_ALLOCATOR)
 
 set (const Compare &compare, const allocator_type &allocator=EASTL_SET_DEFAULT_ALLOCATOR)
 
 set (const this_type &x)
 
 set (this_type &&x)
 
 set (this_type &&x, const allocator_type &allocator)
 
 set (std::initializer_list< value_type > ilist, const Compare &compare=Compare(), const allocator_type &allocator=EASTL_SET_DEFAULT_ALLOCATOR)
 
template<typename Iterator >
 set (Iterator itBegin, Iterator itEnd)
 
this_typeoperator= (const this_type &x)
 
this_typeoperator= (std::initializer_list< value_type > ilist)
 
this_typeoperator= (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, iteratorequal_range (const Key &k)
 
eastl::pair< const_iterator, const_iteratorequal_range (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, true >
 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_comparekey_comp () const
 
key_comparekey_comp ()
 
this_typeoperator= (const this_type &x)
 
this_typeoperator= (std::initializer_list< value_type > ilist)
 
this_typeoperator= (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, true >
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, true >
node_typeDoAllocateNode ()
 
void DoFreeNode (node_type *pNode)
 
node_typeDoCreateNodeFromKey (const key_type &key)
 
node_typeDoCreateNode (Args &&... args)
 
node_typeDoCreateNode (const value_type &value)
 
node_typeDoCreateNode (value_type &&value)
 
node_typeDoCreateNode (const node_type *pNodeSource, node_type *pNodeParent)
 
node_typeDoCopySubtree (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_typeDoGetKeyInsertionPositionUniqueKeys (bool &canInsert, const key_type &key)
 
node_typeDoGetKeyInsertionPositionNonuniqueKeys (const key_type &key)
 
node_typeDoGetKeyInsertionPositionUniqueKeysHint (const_iterator position, bool &bForceToLeft, const key_type &key)
 
node_typeDoGetKeyInsertionPositionNonuniqueKeysHint (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
 

Detailed Description

template<typename Key, typename Compare = eastl::less<Key>, typename Allocator = EASTLAllocatorType>
class eastl::set< Key, Compare, Allocator >

set

Implements a canonical set.

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.

Note that the 'bMutableIterators' template parameter to rbtree is set to false. This means that set::iterator is const and the same as set::const_iterator. This is by design and it follows the C++ standard defect report recommendation. If the user wants to modify a container element, the user needs to either use mutable data members or use const_cast on the iterator's data member. Both of these solutions are recommended by the C++ standard defect report. To consider: Expose the bMutableIterators template policy here at the set level so the user can have non-const set iterators via a template parameter.

Pool allocation If you want to make a custom memory pool for a set container, your pool needs to contain items of type set::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 set<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.


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