#include <bslstl_treeiterator.h>
List of all members.
Public Types |
typedef
bsl::bidirectional_iterator_tag | iterator_category |
typedef NcType | value_type |
typedef DIFFERENCE_TYPE | difference_type |
typedef VALUE * | pointer |
typedef VALUE & | reference |
Public Member Functions |
| TreeIterator () |
| TreeIterator (const bslalg::RbTreeNode *node) |
template<class NON_CONST_ITERATOR > |
| TreeIterator (const NON_CONST_ITERATOR &original, typename bsl::enable_if< bsl::is_convertible< NON_CONST_ITERATOR, NcIter >::value, int >::type=0) |
| TreeIterator (const TreeIterator &original) |
| ~TreeIterator () |
TreeIterator & | operator= (const TreeIterator &rhs) |
TreeIterator & | operator++ () |
TreeIterator & | operator-- () |
reference | operator* () const |
pointer | operator-> () const |
const bslalg::RbTreeNode * | node () const |
Friends |
class | TreeIterator |
template<class VALUE1 , class VALUE2 , class NODEPTR , class DIFF > |
bool | operator== (const TreeIterator< VALUE1, NODEPTR, DIFF > &, const TreeIterator< VALUE2, NODEPTR, DIFF > &) |
template<class VALUE1 , class VALUE2 , class NODEPTR , class DIFF > |
bool | operator!= (const TreeIterator< VALUE1, NODEPTR, DIFF > &, const TreeIterator< VALUE2, NODEPTR, DIFF > &) |
Detailed Description
template<class VALUE, class NODE, class DIFFERENCE_TYPE>
class bslstl::TreeIterator< VALUE, NODE, DIFFERENCE_TYPE >
This class provides an STL-conforming bidirectional iterator over the ordered bslalg::RbTreeNode
objects in a binary tree (see section [24.2.6 bidirectional.iterators] of the C++11 standard). A TreeIterator
provides access to values of the parameterized VALUE
, over a binary tree composed of nodes of the parameterized NODE
(which must derive from bslalg::RbTreeNode
). The parameterized DIFFERENCE_TYPE
determines the standard required difference_type
of the iterator, without requiring access to the allocator-traits for the node. The behavior of the operator*
method is undefined unless the iterator is at a valid position in the tree (i.e., not the end
) and the referenced element has not been removed since the iterator was constructed. NODE
must derives from bslalg::RbTreeNode
, and contains a value
method that returns a reference providing modifiable access to a type that is convertible to the parameterized VALUE
(e.g., a bslstl::TreeNode
object).
See Component bslstl_treeiterator
Member Typedef Documentation
template<class VALUE , class NODE , class DIFFERENCE_TYPE >
template<class VALUE , class NODE , class DIFFERENCE_TYPE >
template<class VALUE , class NODE , class DIFFERENCE_TYPE >
template<class VALUE , class NODE , class DIFFERENCE_TYPE >
template<class VALUE , class NODE , class DIFFERENCE_TYPE >
Constructor & Destructor Documentation
template<class VALUE , class NODE , class DIFFERENCE_TYPE >
Create an uninitialized iterator.
template<class VALUE , class NODE , class DIFFERENCE_TYPE >
Create an iterator at the specified position
. The behavior is undefined unless node
is of the parameterized NODE
, which is derived from 'bslalgRbTreeNode. Note that this constructor is an implementation detail and is not part of the C++ standard.
template<class VALUE , class NODE , class DIFFERENCE_TYPE >
template<class NON_CONST_ITERATOR >
template<class VALUE , class NODE , class DIFFERENCE_TYPE >
Create an iterator having the same value as the specified original
. Note that this operation is either defined by the constructor taking NcIter
(if NcType
is the same as VALUE
), or generated automatically by the compiler. Also note that this construct cannot be defined explicitly (without using bsls_enableif
) to avoid a duplicate declaration when NcType
is the same as VALUE
.
template<class VALUE , class NODE , class DIFFERENCE_TYPE >
Member Function Documentation
template<class VALUE , class NODE , class DIFFERENCE_TYPE >
Assign to this object the value of the specified rhs
object, and a return a reference providing modifiable access to this object.
template<class VALUE , class NODE , class DIFFERENCE_TYPE >
Move this iterator to the next element in the tree and return a reference providing modifiable access to this iterator. The behavior is undefined unless the iterator refers to an element in the tree.
template<class VALUE , class NODE , class DIFFERENCE_TYPE >
Move this iterator to the previous element in the tree and return a reference providing modifiable access to this iterator. The behavior is undefined unless the iterator refers to the past-the-end address or the non-leftmost element in the tree.
template<class VALUE , class NODE , class DIFFERENCE_TYPE >
Return a reference providing modifiable access to the value (of the parameterized VALUE
) of the element at which this iterator is positioned. The behavior is undefined unless this iterator is at a valid position in the tree.
template<class VALUE , class NODE , class DIFFERENCE_TYPE >
Return the address of the value (of the parameterized VALUE
) of the element at which this iterator is positioned. The behavior is undefined unless this iterator is at a valid position in the tree.
template<class VALUE , class NODE , class DIFFERENCE_TYPE >
Return the address of the non-modifiable tree node at which this iterator is positioned, or 0 if this iterator is not at a valid position in the tree. Note that this method is an implementation detail and is not part of the C++ standard.
Friends And Related Function Documentation
template<class VALUE , class NODE , class DIFFERENCE_TYPE >
template<class VALUE , class NODE , class DIFFERENCE_TYPE >
template<class VALUE1 , class VALUE2 , class NODEPTR , class DIFF >
bool operator== |
( |
const TreeIterator< VALUE1, NODEPTR, DIFF > & |
, |
|
|
const TreeIterator< VALUE2, NODEPTR, DIFF > & |
| |
|
) |
| | [friend] |
Return true
if the specified lhs
and the specified rhs
iterators have the same value and false
otherwise. Two iterators have the same value if they refer to the same position in the same tree, or if both iterators are at an invalid position in the tree (i.e., the end
of the tree, or the default constructed value).
template<class VALUE , class NODE , class DIFFERENCE_TYPE >
template<class VALUE1 , class VALUE2 , class NODEPTR , class DIFF >
bool operator!= |
( |
const TreeIterator< VALUE1, NODEPTR, DIFF > & |
, |
|
|
const TreeIterator< VALUE2, NODEPTR, DIFF > & |
| |
|
) |
| | [friend] |
Return true
if the specified lhs
and the specified rhs
iterators do not have the same value and false
otherwise. Two iterators do not have the same value if they differ in either the tree to which they refer or the position in that tree.
The documentation for this class was generated from the following file: