Advanced Programming - Binary Search Tree
A simple Binary Search Tree implementation for the Advanced Programming 2019-2020 course @ SISSA.
Public Types | Public Member Functions | Private Attributes | Friends | List of all members
APutils::__iterator< nodeT, T > Class Template Reference

Class that implements an iterator of a tree. More...

#include <Iterator.hpp>

Public Types

using value_type = T
 Type of the data stored by Node. More...
 
using reference = value_type &
 
using pointer = value_type *
 
using iterator_category = std::forward_iterator_tag
 
using difference_type = std::ptrdiff_t
 

Public Member Functions

 __iterator (nodeT *n) noexcept
 Constructor. More...
 
reference operator* () const noexcept
 Dereference operator. More...
 
pointer operator-> () const noexcept
 Arrow operator. More...
 
__iteratoroperator++ () noexcept
 Pre-increment operator. More...
 
__iterator operator++ (int) noexcept
 Post-increment operator. More...
 
template<class... Types>
void printNode (Types &&... args)
 Prints a tree Node. More...
 

Private Attributes

nodeT * currentNode
 Node referred to by the iterator.
 

Friends

template<typename KT , typename VT , typename cmp >
class APbst::bst
 
bool operator== (const __iterator &a, const __iterator &b)
 Equality operator. More...
 
bool operator!= (const __iterator &a, const __iterator &b)
 Inequality operator. More...
 

Detailed Description

template<typename nodeT, typename T>
class APutils::__iterator< nodeT, T >

Class that implements an iterator of a tree.

Member Typedef Documentation

◆ value_type

template<typename nodeT , typename T >
using APutils::__iterator< nodeT, T >::value_type = T

Type of the data stored by Node.

E.g. std::<const Key, Value> for APbst::bst.

Constructor & Destructor Documentation

◆ __iterator()

template<typename nodeT , typename T >
APutils::__iterator< nodeT, T >::__iterator ( nodeT *  n)
inlineexplicitnoexcept

Constructor.

Parameters
nRaw pointer to a Node.

Creates a new __iterator that refers to Node n.

Member Function Documentation

◆ operator*()

template<typename nodeT , typename T >
reference APutils::__iterator< nodeT, T >::operator* ( ) const
inlinenoexcept

Dereference operator.

Dereferences an __iterator by returning the data stored by the Node it refers to.

See also
__iterator::operator->

◆ operator++() [1/2]

template<typename nodeT , typename T >
__iterator& APutils::__iterator< nodeT, T >::operator++ ( )
inlinenoexcept

Pre-increment operator.

See also
__iterator::operator++(int)

◆ operator++() [2/2]

template<typename nodeT , typename T >
__iterator APutils::__iterator< nodeT, T >::operator++ ( int  )
inlinenoexcept

Post-increment operator.

See also
__iterator::operator++()

◆ operator->()

template<typename nodeT , typename T >
pointer APutils::__iterator< nodeT, T >::operator-> ( ) const
inlinenoexcept

Arrow operator.

Class member access operator; it returns a pointer to the data stored by the Node the __iterator refers to.

See also
__iterator::operator*

◆ printNode()

template<typename nodeT , typename T >
template<class... Types>
void APutils::__iterator< nodeT, T >::printNode ( Types &&...  args)
inline

Prints a tree Node.

Forwards to Node::printNode().

Friends And Related Function Documentation

◆ APbst::bst

template<typename nodeT , typename T >
template<typename KT , typename VT , typename cmp >
friend class APbst::bst
friend

The class APbst::bst is declared to be friend in order to make it able to access our private member ( currentNode).

◆ operator!=

template<typename nodeT , typename T >
bool operator!= ( const __iterator< nodeT, T > &  a,
const __iterator< nodeT, T > &  b 
)
friend

Inequality operator.

The logical negation of __iterator::operator==.

See also
__iterator::operator==

◆ operator==

template<typename nodeT , typename T >
bool operator== ( const __iterator< nodeT, T > &  a,
const __iterator< nodeT, T > &  b 
)
friend

Equality operator.

Two iterators are defined equal if they point to the same node.

See also
__iterator::operator!=

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