*first"和 "Node *first"有什么区别?-6ren"> *first"和 "Node *first"有什么区别?-我正在研究使用模板实现链表。 按照目前的情况,在看了一些指南之后,我已经成功地构建了一个功能性的,但我想知道模板指针的目的是什么?代码似乎在任意使用它们。我将在下面的标题代码中举例说明: templa-6ren">
gpt4 book ai didi

c++ - "Node *first"和 "Node *first"有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:14:09 26 4
gpt4 key购买 nike

我正在研究使用模板实现链表。

按照目前的情况,在看了一些指南之后,我已经成功地构建了一个功能性的,但我想知道模板指针的目的是什么?代码似乎在任意使用它们。我将在下面的标题代码中举例说明:

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;

};

在这个特定的上下文中,为什么我们需要用 声明节点变量或链表?就我而言,使用 < T > 效果很好,但我很可能遗漏了一些东西。 Node 类(上面未列出)也是使用 < 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 的指针.

关于c++ - "Node<T*> *first"和 "Node<T> *first"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56209644/

26 4 0