"Node<T*> *first"和"Node<T> *first"有什么区别?
What is the difference between "Node<T*> *first" and "Node<T> *first"?
我正在考虑使用模板。
就目前而言,在查看了一些指南后,我设法建立了一个功能齐全的指南,但是我想知道模板指针的目的是什么?该代码似乎是在任意使用它们。我将在下面的标题代码上举例说明:
template <class T>
class LinkedList{};
template <class T>
class LinkedList<T*>{
private:
Node<T*> *first;
int size;
public:
class Iterator{
public:
Iterator(Node<T*> *newElem){
elem = newElem;
}
virtual ~Iterator(){
}
T getValue(){
return *(elem->getValue());
}
void next(){
elem = elem->getNext();
}
void operator++(int i){
next();
}
void operator++(){
next();
}
T operator*(){
return getValue();
}
bool operator==(const Iterator& rhs){
return (elem == rhs.elem);
}
bool operator!=(const Iterator& rhs){
return (elem != rhs.elem);
}
bool hasNext(){
if (elem == NULL)
return false;
return true;
}
private:
Node<T*> *elem;
};
在此特定上下文中,为什么我们需要声明节点变量或链接列表&lt;t *>?就我而言,使用&lt;T>,但我很可能缺少一些东西。使用&lt;T>也是,当您在那里添加该指针时,实际上会发生什么?
非常感谢!
差异在于您的Node
的内容。
让我们定义Node
类:
template <class T>
struct Node
{
T data;
Node * next;
Node * previous;
};
让我们使用int
作为类型T
,并实例化:
struct Node
{
int data;
Node * next;
Node * previous;
};
让我们使用int
并实例化T *
,如Node<T*>
或Node <int *>
:
struct Node
{
int * data;
Node * next;
Node * previous;
};
请注意data
成员的数据类型有任何区别吗?
在一个示例中,data
是int
。在另一个示例中,data
是指向 int
的指针。
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- 如何防止clang格式在流运算符调用之间添加换行符<<
- <<操作员在下面的行中工作
- EASTL矢量<向量<int>>连续的
- C - 创建矢量&lt; vector&lt; double&gt;&gt;矩阵具有分配而不是inizializ
- 为什么将此对向量&lt; map&lt; int,int&gt;&gt;中的地图进行更新.失败
- C :对矢量进行排序&lt; struct&gt;(结构有2个整数)基于结构的整数之一
- 明确的专业化“ CheckIntmap&lt;&gt;”实例化
- 什么是模板&lt;&gt;inline bla bla
- 编辑C Qlist&lt; object*&gt; gt;QML代码和一些QML警告中的模型
- eigen :: llt&lt;eigen :: matrixxd&gt;具有不完整的类型
- 错误,包括&lt; ctype&gt;在原子上使用C 11
- std::vector<;uint8_t>;当C++11/14启用时,手动复制而不是调用memcpy
- 如何加入向量&lt; int&gt;到C 中的单个INT
- 是std :: set&lt; std :: future&gt;不可能存在
- 是numeric_limits&lt; int&gt; :: is_modulo从逻辑上矛盾
- opencv 2.4.7在iOS错误背景_segm.hpp #include&lt; list&gt;未找到
- 在修改列表后,std :: list&lt; t&gt; :: end()的值是否会更改
- ///<评论></评论>在Visual Studio中