使用Pair模板实现List模板

时间:2012-11-11 20:57:50

标签: c++ templates

我正在尝试使用自己的对类实现单链表模板类。我这样做是为了更新我的C ++技能,所以这就是为什么我不只是使用STL。

我的列表模板由单一类型参数化:

template <typename T>
class LinkedList
{
private:
    Pair<T, Pair<???>* >* _head;
};

问题在于我希望_head是一对,其第二个元素是同一类型的一对。想法是_head.first是元素,_head.second是指向列表其余部分的指针,如果它是最后一个元素,则为NULL。

有没有办法使用引用自身的模板类型?

2 个答案:

答案 0 :(得分:1)

也许你正试图做这样的事情:

template <typename T>
class LinkedList
{
private:
    Pair<T, ListList<T> >* _head;
};

答案 1 :(得分:0)

典型的单链表由节点组成,每个节点包含一个指向下一个节点的指针或一个指示结束信号的空指针:

template <typename T> List
{
    struct Node
    {
        Node * next;
        T value;
    };

    Node * head;

    List() : head(NULL) { }

    // ... insert, delete, find, iterate ...
}