模板二叉树的迭代器

时间:2012-02-24 16:22:28

标签: c++ templates iterator binary-tree

我为二叉树编写模板类:

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_;
    };
}

operator +的定义是什么?(我无法使用以下代码编译)

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

1 个答案:

答案 0 :(得分:2)

通过这些更改,它可以编译:

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++ ()
{
    //....
}