假设我想创建一个不可修改的链表(即,它只能被遍历,一旦它被创建,就不能添加或删除任何节点)。这可以通过以下方式轻松实现:
struct ListNode
{
int value;
ListNode* nextNode;
}
我的问题是……是否可以使用引用而不是指针?
struct ListNodeWithRefs
{
int value;
ListNodeWithRefs &nextNode;
}
我不确定它是否会提供任何性能提升,但是...这个问题是在编码时突然出现的,到目前为止,我的答案是否定的,但我可能遗漏了一些东西。
原则上,没有什么能阻止你使用引用,并像这样构造列表元素:
ListNodeWithRefs::ListNodeWithRefs(ListNodeWithRefs &next):
nextNode(next)
{}
但是有一个鸡和蛋的问题,因为next
还强制它的next
元素在它的创建时存在,等等……
注意:我想我的问题也可以用来定义这个列表:
struct ListNodeConst
{
int value;
const ListNode* nextNode;
}
https://stackoverflow.com/questions/15186196
复制相似问题