C++ 使用Pair模板实现列表模板
我正在尝试使用我自己的pair类实现一个单链表模板类。我这样做是为了提高我的C++技能,所以我不只是使用STL。 我的列表模板由单个类型参数化:C++ 使用Pair模板实现列表模板,c++,templates,C++,Templates,我正在尝试使用我自己的pair类实现一个单链表模板类。我这样做是为了提高我的C++技能,所以我不只是使用STL。 我的列表模板由单个类型参数化: template <typename T> class LinkedList { private: Pair<T, Pair<???>* >* _head; }; 模板 类链接列表 { 私人: Pair典型的单链表由节点组成,每个节点包含指向下一个节点的指针或表示结束的空指针: template <t
template <typename T>
class LinkedList
{
private:
Pair<T, Pair<???>* >* _head;
};
模板
类链接列表
{
私人:
Pair典型的单链表由节点组成,每个节点包含指向下一个节点的指针或表示结束的空指针:
template <typename T> List
{
struct Node
{
Node * next;
T value;
};
Node * head;
List() : head(NULL) { }
// ... insert, delete, find, iterate ...
}
模板列表
{
结构体类型
{
节点*下一步;
T值;
};
节点*头;
List():head(NULL){}
//…插入、删除、查找、迭代。。。
}
也许您正在尝试这样做:
template <typename T>
class LinkedList
{
private:
Pair<T, ListList<T> >* _head;
};
模板
类链接列表
{
私人:
配对*头;
};
想想看。你能有一个包含自身的框吗?你是在尝试创建编译时列表还是运行时列表?Kerek SB:你不能有一个包含自身的框,但你可以有一个包含相同类型的不同框。这就是我试图建模的。@Dave链接列表不包含节点,它们包含链接lists。@戴夫:不,你不能,因为这会给你一个无限的盒子嵌套。这基本上就是我想做的,只是我想使用一个对模板,而不是定义一个节点结构。你的解决方案肯定会奏效,但我很好奇我的想法是否也能奏效。@戴夫:不,因为你试图定义一个无限的盒子递归结构。您的想法与struct X{X;}完全相同
@hyde:对不起,你说得对--我原以为模板参数的规格说明会是一个递归问题,但鉴于你只需要一个指向该对的指针,它实际上不应该是。毕竟,你可以说pair
然后再强制转换指针,那就可以了。@hyde:所以,我认为你只需要交替使用两个参数即可sted类,如Vaughn的回答:struct Node{Pair head;}
。然后它几乎与我的代码相同,只是您将两个数据成员放在一对中。我猜它应该是pair\u head
,但这看起来很合理。@KerrekSB:我猜OP的意图是将空列表表示为空。