在Java中,引用可以初始化为null。但是,在C ++中,它会导致问题。所以不确定如何使用reference-only来实现链表。
答案 0 :(得分:2)
我不确定你为什么要在c ++中使用引用,因为在C ++中引用不能像你说的那样为null。如果到达链表的末尾,你会怎么做?
你唯一的解决方案(因为你是c ++的新手)就是使用这样的指针。
struct Node{
int value;
Node* next;
}
这样你可以将名为next的指针保留为null,这将表示链表的结尾。
答案 1 :(得分:2)
我不知道这个概念有多么有用,但您可以使用std::reference_wrapper,
执行此操作,如下所示:
#include <iostream>
#include <list>
#include <functional>
using namespace std;
int main() {
int a = 2, b = 6, c = 1;
list<reference_wrapper<int>> mylist;
mylist.push_back(a);
mylist.push_back(b);
mylist.push_back(c);
for(auto x : mylist) {
cout << x << " ";
}
cout << endl;
a = 3; // <- this setting will modify mylist!
for(auto x : mylist) {
cout << x << " ";
}
return 0;
}
我建议学习C ++处理事物的方法,特别是你来自Java世界。 Demo!