![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
и еще, дерево должно быть из элементов сложных, ну я имею в виду что узел дерева должен быть структурой с несколькими полями данных.
-------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
тогда уж проще использовать просто list<T>, который будет сортироваться за то-же время что и твое дерево
к тому-же узел дерева у которого есть итераторы, методы insert, push_back и тд. выглядит не как узел дерева, а как список(он и есть список) |
|||
|
||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
вот вставила в прогу кусок с листом, ошибки...
Compiling... Tree.cpp 1>d:\toncitos\tree\tree\metreestruct.h(11) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1> d:\toncitos\tree\tree\metreestruct.h(19) : see reference to class template instantiation 'Tree_C<T>' being compiled 1>d:\toncitos\tree\tree\metreestruct.h(11) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1> d:\toncitos\tree\tree\tree.cpp(111) : see reference to class template instantiation 'Tree_C<T>' being compiled 1> with 1> [ 1> T=int 1> ] 1>Generating Code... 1>Compiling... 1>TreeView.cpp 1>Generating Code... 1>Compiling... 1>AddNewChild.cpp 1>MainFrm.cpp 1>TreeDlg.cpp 1>TreeDoc.cpp 1>Generating Code... 1>Compiling... 1>MeTreeStruct.cpp 1>d:\toncitos\tree\tree\metreestruct.h(11) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1> d:\toncitos\tree\tree\metreestruct.h(19) : see reference to class template instantiation 'Tree_C<T>' being compiled Это сообщение отредактировал(а) tonchitos - 12.3.2008, 23:38 -------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| korian |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 8.3.2008 Где: Украина, Харьков Репутация: 3 Всего: 17 |
вообще-то, я там sort листа и использую, только там сортировка углубляеться. не нравяться названия методов - сделайте inline обертку - это быстрее, проще и безопаснее, чем писать с нуля. обратите, пожайлуста, внимание: template <class T> class Tree : public std::list<Tree<T> > Tree<int> t; можна написать как: list<list<list<list.....<list<int> > >......> t; //(возможно бесконечное число вложений. хотя так его описать нельзя, т.к. к каждому листу еще надо присоединить int data) извените конечно, но узел он и есть список. можна конечно делать такое дерево (узел содержит 3 списка). struct node { node* next; node* firstChild; node* parent; } но если устраивает такое (что у меня вообщем то и есть): struct { node* firstChild; } т.е. единственно, узел не знает о родителе и соседних клетках, а в большинстве случаев в этом нету необходимости (обход дерева идет с корня). а если все же надо передвигаться по дереву снизу вверх, можна добавить в класс Tree инфу о родителе.
это дерево может работать с любыми данными дайте листинг кода и номер строки на которой ошибка. Это сообщение отредактировал(а) korian - 12.3.2008, 18:12 |
|||
|
||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
ошибка тут
operator < (const Tree_C<T> & node) {return data < node.data}; код? у мя проект большой.... только если весь проект. Тк в этом файле ниче кроме этого контейнера. Я так и не пойму как это ботает, ну разьясните плиз. примерчик еще хочу -------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| korian |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 8.3.2008 Где: Украина, Харьков Репутация: 3 Всего: 17 |
operator < (const Tree_C<T> & node) {return data < node.data};
тут ; не там стоит operator < (const Tree_C<T> & node) {return data < node.data;} листинг я имел ввиду, листинг класса Tree и строку как объявлен объект класса. |
|||
|
||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
не помогло...
-------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| korian |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 8.3.2008 Где: Украина, Харьков Репутация: 3 Всего: 17 |
создание бинарного дерева, по типу, как это делалось тут: http://forum.vingrad.ru/forum/topic-200066.html
Добавлено через 2 минуты и 20 секунд дайте вот это: листинг я имел ввиду, листинг класса Tree и строку как объявлен объект класса. что за компилятор и вообще, ICQ есть? а то сейчас это все растянется на кучу страниц. |
|||
|
||||
| korian |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 8.3.2008 Где: Украина, Харьков Репутация: 3 Всего: 17 |
понял в чем ошибка, плюс нашел еще одну, из-за которой сортировка не могла работать.
|
|||
|
||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
на работе мне предложили так:
тут с ошибками... чем этот вариант лучше или хуже? Добавлено @ 23:33 korian, ваш вариант загружается таки теперь Это сообщение отредактировал(а) tonchitos - 12.3.2008, 23:34 -------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| korian |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 8.3.2008 Где: Украина, Харьков Репутация: 3 Всего: 17 |
||||
|
||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
мне сказали что лист не имеет ф-ии childs.size(); в отличие от вектора.
-------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| korian |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 8.3.2008 Где: Украина, Харьков Репутация: 3 Всего: 17 |
size у листа есть, у него нету доступа к елементам по индексу
|
|||
|
||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
ясно...
и еще, я понимаю, что надоела уже наверно. Но как лучше сохранить в файл это дерево? -------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| Mayk |
|
||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Ситуация А) мы создаём дерево и наследуем его от list'а, это приводит к нарушению инкапсуляции так как теперь дерево может запросто быть преобразовано в list, там где это не надо. Ситуация Б) мы создаём дерево и не наследуем его от list'а, это не приводит к нарушению инкапсуляции так как теперь дерево не может запросто быть преобразовано в list, там где это не надо. Инкапсуляцию вижу, грабли не обнаружены. Грабли вижу, инкапсуляция не обнаружена. Меня как пользователя дерева не колышет что есть у листа а что нет. Если у него нет доступа к i-ому элементу, это его личные проблемы. меня как пользователя дерева они вообще не должны волновать.
Не надо вводить человека в заблуждение. PImpl сюда прикручивается в несколько пинков, а с ним клиентский код ВООБЩЕ не будет зависеть от листов/векторов/деков. В случае с наследованием от листа/вектора/дека сделать код не зависимым от базового типа НЕВОЗМОЖНО в принципе. Поэтому про жесткую привязку --- это относится к наследованию нежели к композиции. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |