Как правильно определить функцию вставки дерева в C ++? - PullRequest
0 голосов
/ 01 марта 2012

В C, если у меня есть дерево или связанный список, я должен объявить функцию для вставки, такую ​​как

insert(Node ** node) 

, чтобы я мог вставить новый корень / голову.
У меня вопрос, как написать это со ссылками в C ++?

Ответы [ 2 ]

1 голос
/ 01 марта 2012

Вы бы написали функцию как

ReturnType insert(Node* &node)

То есть параметр является ссылкой на переменную Node*, содержащую корень дерева. Оттуда вы будете действовать как обычно, за исключением того, что по сравнению с версией функции C вам не нужно разыменовывать node для переназначения корня. Например, если бы вы написали следующее в исходной (C) версии кода:

*node = /* ... something ... */

Вы бы просто написали

node = /* ... something ... */

в обновленной версии кода.

Надеюсь, это поможет!

0 голосов
/ 01 марта 2012

Как сказал templatetypedef.Или:

ReturnType insert(Node &node)

, что я бы предпочел.Мне нравится набирать . вместо -> (сохраняет символ:))

Конечно, вызывающий объект должен убедиться, что он создает Node объекты с правильной областью действия или создает их, используя new.

Node notGood;
Node *goodPtr = new Node();

insert(notGood); //problem
insert(*goodPtr); //ok
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...