Дерево
От: Reef Россия  
Дата: 12.12.01 20:41
Оценка:
Не подскажите где можно найти C-код какого-нибудь класса, реализующего структуру дерева?
Re: Дерево
От: Reef Россия  
Дата: 12.12.01 21:16
Оценка:
Здравствуйте Reef, Вы писали:

R>Не подскажите где можно найти C-код какого-нибудь класса, реализующего структуру дерева?


Посмотрел статьи здешние и спешу добавить, что дерево мне нужно обычное (не бинарное)
Re: Дерево
От: KoraK Россия http:\\none.ru
Дата: 13.12.01 09:09
Оценка:
Здравствуйте Reef, Вы писали:

R>Не подскажите где можно найти C-код какого-нибудь класса, реализующего структуру дерева?


тут
только будем считать что вы описались — не "С-код" а "С++ коод", на С-коде классы не попишешь

[ccode]
class Node
{
public:
Node(Node* pParent=NULL) {Parent=pParent;}
Node* GetParent(){return Parent;}

vector<Node> Childs;

private:
Node* Parent;
};
[\ccode]

Только добавь пару методов
Re[2]: Дерево
От: DNS Россия  
Дата: 14.12.01 08:54
Оценка:
Здравствуйте KoraK, Вы писали:

KK>Здравствуйте Reef, Вы писали:


R>>Не подскажите где можно найти C-код какого-нибудь класса, реализующего структуру дерева?


KK>тут

KK>только будем считать что вы описались — не "С-код" а "С++ коод", на С-коде классы не попишешь

KK>[ccode]

KK>class Node
KK>{
KK> public:
KK> Node(Node* pParent=NULL) {Parent=pParent;}
KK> Node* GetParent(){return Parent;}

KK> vector<Node> Childs;


KK> private:

KK> Node* Parent;
KK>};
KK>[\ccode]

KK>Только добавь пару методов


Миленько, только Children смотрелось бы ещё милее
Д.Н.С.
Re[3]: Дерево
От: KoraK Россия http:\\none.ru
Дата: 14.12.01 10:16
Оценка:
Здравствуйте DNS, Вы писали:

DNS>Здравствуйте KoraK, Вы писали:


KK>>Здравствуйте Reef, Вы писали:


R>>>Не подскажите где можно найти C-код какого-нибудь класса, реализующего структуру дерева?


KK>>тут

KK>>только будем считать что вы описались — не "С-код" а "С++ коод", на С-коде классы не попишешь

KK>>[ccode]

KK>>class Node
KK>>{
KK>> public:
KK>> Node(Node* pParent=NULL) {Parent=pParent;}
KK>> Node* GetParent(){return Parent;}

KK>> vector<Node> Childs;


KK>> private:

KK>> Node* Parent;
KK>>};
KK>>[\ccode]

KK>>Только добавь пару методов


DNS>Миленько, только Children смотрелось бы ещё милее


Sorry ^) Исправить не проблема
Re[2]: Дерево
От: Павел Кузнецов  
Дата: 29.01.02 08:47
Оценка: 3 (1)
Здравствуйте KoraK, Вы писали:

[ccode]
class Node
{
public:
[...]
vector<Node> Childs;
[...]
};[\ccode]

Во-первых, не vector, а std::vector. Во-вторых, вызывает очень большие сомнения обоснованность нахождения члена Childs в области public:. В-третьих, использование контейнеров STL с недоопределенными (incomplete) типами вызывает undefined behavior.
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[3]: Дерево
От: ilya_ny  
Дата: 12.12.03 02:47
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Здравствуйте KoraK, Вы писали:


ПК>[ccode]

ПК>class Node
ПК>{
ПК> public:
ПК>[...]
ПК> vector<Node> Childs;
ПК>[...]
ПК>};[\ccode]

ПК>Во-первых, не vector, а std::vector. Во-вторых, вызывает очень большие сомнения обоснованность нахождения члена Childs в области public:. В-третьих, использование контейнеров STL с недоопределенными (incomplete) типами вызывает undefined behavior.


В-четвертых слово Child во множественном числе есть Children
Re[3]: Дерево
От: Кодт Россия  
Дата: 12.12.03 13:55
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Во-первых, не vector, а std::vector. Во-вторых, вызывает очень большие сомнения обоснованность нахождения члена Childs в области public:. В-третьих, использование контейнеров STL с недоопределенными (incomplete) типами вызывает undefined behavior.


В пятых, использовать вектор экземпляров — это жестоко! Добавил новый подузел, вышел за пределы capacity(), — как начнется copy-ctor'ование всех остальных узлов дерева.

Если уж хранить, то вектор умных указателей, например, boost::shared_ptr (или ввести подсчет ссылок прямо в узлы).

Кроме того, если запросы getNextSibling / getPrevSibling достаточно распространены, то, возможно, будет продуктивнее внедрить функциональность двунаправленного списка прямо в узлы.
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.