Ich versuche, einen Iterator für einen binären Suchbaum zu implementieren. Ich wurde gebeten, in meinem Iterator keine STL zu verwenden. Ich muss nur die Operatoren außer Kraft setzen: ++
, operator*
und !=
. Ich bekomme einen Fehler mit der operator*
: "Nein *operator
entspricht dieser Operanden. Operanden Typen sind *iterator<std::string>
". Ich verwende eine Vorlagenbibliothek, daher weiß ich nicht, warum sie nicht funktioniert.binäre Suchbaum inorder iterator C++
Hier ist mein Code:
template <typename T>
class Iterator : public std::iterator<std::forward_iterator_tag, {
public:
Iterator(TreeNode<T>* root)
{
this->current = root;
}
template <typename T>
bool operator!=(Iterator<T> const & other) const
{
return this->current != other.current;
}
template <typename T>
T &operator*() const {
return current->element;
}
Iterator operator++()
{
current = current->nextInorder();
return *this;
}
Iterator operator++(int dummy)
{
TreeNode<T> temp = current;
current = current->nextInorder();
return *temp;
}
private:
TreeNode<T>* current;
void nextInorder()
{
if (current->element == NULL)return;
else {
nextInorder(current->left);
nextInorder(current->element);
nextInorder(current->right);
}
}
};