【问题标题】:Iterator for template binary tree模板二叉树的迭代器
【发布时间】:2012-02-24 16:22:28
【问题描述】:

我为二叉树编写模板类:

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

【问题讨论】:

  • 你的源代码中第二个sn-p的第三行是否以Tree&gt;T&gt;开头?

标签: c++ templates iterator binary-tree


【解决方案1】:

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

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

【讨论】:

猜你喜欢
  • 2013-11-06
  • 1970-01-01
  • 2016-02-20
  • 2011-02-25
  • 1970-01-01
  • 1970-01-01
  • 2015-01-18
  • 1970-01-01
  • 2012-10-02
相关资源
最近更新 更多