8 template<
typename KT,
typename VT,
typename cmp>
18 template <
typename nodeT,
typename T>
33 using iterator_category = std::forward_iterator_tag;
34 using difference_type = std::ptrdiff_t;
43 explicit __iterator(nodeT* n) noexcept : currentNode{n} {}
60 reference
operator*() const noexcept {
return currentNode->data; }
70 pointer
operator->() const noexcept {
return &(*(*this)); }
85 }
else if (currentNode->right) {
86 currentNode = currentNode->right.get();
87 while (currentNode->left) {
88 currentNode = currentNode->left.get();
95 nodeT* tmpNode = currentNode->parent;
96 while (tmpNode && currentNode == tmpNode->right.get()) {
97 currentNode = tmpNode;
98 tmpNode = currentNode->parent;
100 currentNode = tmpNode;
144 template<
typename KT,
typename VT,
typename cmp>
152 template<
class... Types>
154 return currentNode->printNode(std::forward<Types>(args)...);
161 #endif // ITERATOR_HPP T value_type
Type of the data stored by Node.
Definition: Iterator.hpp:30
Class that implements an iterator of a tree.
Definition: Iterator.hpp:19
__iterator(nodeT *n) noexcept
Constructor.
Definition: Iterator.hpp:43
nodeT * currentNode
Node referred to by the iterator.
Definition: Iterator.hpp:21
__iterator operator++(int) noexcept
Post-increment operator.
Definition: Iterator.hpp:110
friend bool operator==(const __iterator &a, const __iterator &b)
Equality operator.
Definition: Iterator.hpp:129
reference operator*() const noexcept
Dereference operator.
Definition: Iterator.hpp:60
pointer operator->() const noexcept
Arrow operator.
Definition: Iterator.hpp:70
friend bool operator!=(const __iterator &a, const __iterator &b)
Inequality operator.
Definition: Iterator.hpp:138
__iterator & operator++() noexcept
Pre-increment operator.
Definition: Iterator.hpp:77
Namespace that stands for "Advanced Programming Utils".
Definition: Iterator.hpp:13
Namespace for the Binary Search Tree.
Definition: BST.hpp:97
void printNode(Types &&... args)
Prints a tree Node.
Definition: Iterator.hpp:153
Class that implements a Binary Search Tree.
Definition: BST.hpp:116