模板二进制树的迭代器

Iterator for template binary tree

本文关键字:迭代器 二进制      更新时间:2023-10-16

我为二进制树编写模板类:

template <class T>
class Tree {
public:
    Tree():head_(NULL),size_(0){}
    ~Tree();
    bool isEmpty()const {return size_ == 0;};
    bool insert(const T& ele);
    bool remove(const T& ele);
    size_t size() {return size_;} 
public:
    class inorder_iterator 
    {
        inorder_iterator& operator++ ();
    private:
        Node<T>* cur_;
    };
}

运算符++的定义是什么?(我无法使用以下代码进行编译)

template <class T>
Tree<T>::inorder_iterator& 
Tree<T>::inorder_iterator::operator++ ()
{
    //....
}

通过这些更改编译:

template <class T>
class Node {}; 
template <class T>
class Tree {
    Node<T> head_;
    size_t size_;
public:
    Tree():head_(NULL),size_(0){}
    ~Tree();
    bool isEmpty()const {return size_ == 0;};
    bool insert(const T& ele);
    bool remove(const T& ele);
    size_t size() {return size_;} 
public:
    class inorder_iterator 
    {   
        inorder_iterator& operator++ (); 
    private:
        Node<T>* cur_;
    };  
};
template <class T>
typename Tree<T>::inorder_iterator& 
Tree<T>::inorder_iterator::operator++ ()
{
    //....
}