Gis*_*une 0 c++ templates struct linked-list
在.NET中,我非常喜欢System.Generic.List,并希望将其复制为学习C++语言的一种方式.问题是我希望它是通用的,我希望元素包含模板类型T的值.我知道要做什么,但问题在于节点.
template<class T>
struct node
{
T value;
bool isFirst;
node *next;
};
Run Code Online (Sandbox Code Playgroud)
我试过谷歌搜索一段时间,但没有发现任何相关的东西.我刚刚浏览了www.cplusplus.com上的教程.我是否必须使用指针引用此类,如果是,如何?
提前致谢
Gisle Aune
您的代码没有任何问题.实际上,我可能会把它写成
template<class T>
struct node
{
T value;
bool isFirst;
node<T> *next;
};
Run Code Online (Sandbox Code Playgroud)
因为它不是那么冗长而且next指向node相同类型的更清楚,但是你的版本也很好:在模板中,当你使用类的名称而没有明确指定模板参数时,它暗示它们是当前实例化的模板中的相同模板.这在C++标准的§14.6.1中解释:
在类模板的范围内,当模板的名称既不合格也不跟<时,它等同于模板的名称,后跟<>中包含的模板参数.[示例:构造函数
Set可以称为Set()或Set<T>().通过使用适当的模板参数显式限定模板名称,可以引用该类的其他特化(14.7.3).[例:
template<class T> class X {
X* p; // meaning X<T>
X<T>* p2;
X<int>* p3;
};
Run Code Online (Sandbox Code Playgroud)
- 末端的例子]
顺便说一下,编写通用列表是学习语言的有用练习,但请记住,C++标准库中已经有许多通用容器可用; 除了它们经过彻底的测试和优化之外,它们的"迭代器"抽象允许您在几乎任何容器上使用库中可用的独立算法.
| 归档时间: |
|
| 查看次数: |
5358 次 |
| 最近记录: |