cpp LinkedList и Node. Должны ли данные быть указателем или ссылкой?

0

Это для домашнего задания в курсе cpp, и я ищу некоторые лучшие практики.

У меня довольно сложный класс, который я хотел бы сохранить в классе связанных списков. Я должен реализовать свой собственный, включая класс узлов. Мне нужно только сохранить этот единственный относительно сложный тип, над которым я работаю.

Должен ли я сделать тип данных узла ссылкой на сложный тип, или я должен сделать вместо него указатель на него?

Опция 1:

class Node
{
public:
    Node* prev;
    Node* next;
    ComplexType *data;
}

Вариант 2:

class Node
{
public:
    Node* prev;
    Node* next;
    ComplexType &data;
}

Предполагая, что мне также придется обрабатывать различные случаи копирования значения при работе с эталонным решением. Какой из них считается более правильным? И почему?

  • 1
    Есть ли причина не хранить объект ComplexType ?
Теги:
design

3 ответа

1
Лучший ответ

Как только ссылка инициализируется, ее нельзя изменить снова, чтобы ссылаться на что-либо еще. Поэтому ваш список будет более полезным/гибким, если вы будете придерживаться указателей.

2

Я бы пошел на вариант 2. Ваши предыдущие и следующие должны быть указателями, поскольку они могут измениться. Данные узлов не должны изменяться в списке. Только его позиция в списке должна изменяться путем изменения указателей prev/next. На мой взгляд, это всегда лучше, если вы можете предотвратить использование указателей там, где это возможно, но в этом случае ваш предыдущий/следующий член должен быть указателем, поскольку они могут измениться.

1

Предположительно вам нужна свобода иметь нулевые data, а также изменить его после строительства. В этом случае вам понадобятся указатели некоторого разнообразия.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню