![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| toxx |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 2 Всего: 13 |
Есть структура данных n- мерного дерева
я создаю дерево в 2 шага 1.Создаю корень
2. Остальное дерево
Как мне объединить эти 2 функции в одну и что можно оптимизировать? Хочу переделать эту конструкцию потом под конструктор класса... Это сообщение отредактировал(а) toxx - 26.4.2010, 21:31 |
||||||||
|
|||||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
это структура описывает не дерево, а его стык, а следовательно название не Tree а где у Вас корень ? навису ? заведите структуру/класс Tree, которая будет хранить корень и иметь нужные операции, такие как |
|||
|
||||
| toxx |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 2 Всего: 13 |
mes
Как не дерево?
Нет нет он не на вису... я его(корень) создаю, задаю количество сыновей, потом вызываю insert для этих сыновей, который в свою очередь создаёт дерево всё... Это сообщение отредактировал(а) toxx - 26.4.2010, 21:51 |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Это си стиль, где создается корень и последующее правильное его использование лежит на плечах программиста, А вы, я так полагаю, хотите выразить в С++ стиле, для этого должны общаться не с корнем, а с самим деревом. посмотрите дизайн того же std::list, и сравните его с C-листом. Это сообщение отредактировал(а) mes - 26.4.2010, 21:57 |
|||
|
||||
| toxx |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 2 Всего: 13 |
mes
вы меня щас так запутали вот деревьями в стиле си и си++, что щас придётся очень много поменять.... я даже не знал об таком когда делал это дерево даже близко я был уверен, что стиль он один... т.е. как я понимаю нужно создать структуру данных
потом создать класс... с этими данными?
эмм, а где это можно посмотреть... всегда было интересно, но не знаю где( знаю гдето в библиотеках вижл студио...) Это сообщение отредактировал(а) toxx - 26.4.2010, 22:09 |
||||||
|
|||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
можно и там (в инклудах), но я имел ввиду ознакомиться с описанием в руководстве.. для начала нужно узнать , есть ли у вас опыт работы с стд контейнером (напр. вектором) посредством итератора ? |
|||
|
||||
| toxx |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 2 Всего: 13 |
а где это руководство взять? не разу просто не смотрел ничего подобного.
нет нету... что такое итераторы представляю только теоретически... это очень сильно влияет на то, смогу ли я сделать класс?(если это для этого нужно изучу) |
||||
|
|||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
ну для краткой информации с примером можно использовать cplusplus.com для более подробной есть книги (где то на форуме есть тема им посвященная и не одна)
да, без понимания что это и какая от этого польза будет трудно понять что требуется от класса. но с другой стороны, для начала, можно сделать древо в "полу-С++" стиле, т.е без итераторов.. Добавлено через 6 минут и 51 секунду В общем общая схема С++ стиля выглядит следующим образом : 1. есть некая структура данных (не struct) представляющая нашу модель, она является подслоем - все элементы ее представляющие недоступны конечному пользователю.. 2. Есть некоторые инструменты, которые знают как пользоваться структурой о предоставляют некий интерфейс конечному пользователю. |
||||
|
|||||
| toxx |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 2 Всего: 13 |
mes
т.е. на данном уровне я должен написать без итераторов написать моё дерево... используя вот такую структуру данных
и добавить её в класс и соответственно реализовать методы заполнения и вывода? и класс этот будет выглядеть примерно так:
Мне просто с фронтом работы определиться, я надеялся на одно а получил сразу так сказать "в лоб" то, что я хотел делать как раз после слияния моих функций... |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
не дерево, а узел/стык struct Node
угу.. не красиво для контейнера делать print членом класса.. Добавлено через 6 минут и 7 секунд вектор хранит указатели, поэтому желательно, чтоб такой вектор был упрятан подальше в класс, который будет заботиться о правильном удалении элементов и проксировать нужные методы вектора.. |
|||
|
||||
| toxx |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 2 Всего: 13 |
mes
ага...
Теперь я не знаю как этим всем пользоваться...эхх и озадачили вы меня(даже конструктор написать не могу). Добавлено через 47 секунд
вроде бы итак спрятан в структуре... |
||||||||
|
|||||||||
| toxx |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 2 Всего: 13 |
конструктор такой вот получился...для корня
а нормально, что получается так вот?
Это сообщение отредактировал(а) toxx - 27.4.2010, 00:32 |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
не очень ) как же спрятан ? если к нему извне resize применяете.. ну cin и cout там только для теста ? я надеюсь ну так в С++-стиле без итераторов дерево не получится.. я предлагал для начала сделать в полу-С++ стиле.. т.е. тот же С но с классами.. Добавлено через 4 минуты и 11 секунд для начала в любом случае надо представить удобную систему представления.. так как перемещаться у вас по древу можно и от соседа к соседу, и вглубь.. |
|||
|
||||
| toxx |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 2 Всего: 13 |
mes
вечером исправлю
ага, это всё само будет заполнятся и для других данных =)меня просто на этом форуме научили идти от простого к сложному... как что новое, так как баран на новые ворота.... Это сообщение отредактировал(а) toxx - 27.4.2010, 14:20 |
||||
|
|||||
| toxx |
|
||||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 2 Всего: 13 |
Сделал так...опять в стиле си похоже, никак не могу сообразить как сделать конструктор он у меня получается какой-то странный.. Еще есть идея
Cделать конструктор
Конструктор-копирования
и insert
Но почему то эта идея не работает... Это сообщение отредактировал(а) toxx - 27.4.2010, 19:36 |
||||||||||||||
|
|||||||||||||||
| azesmcar |
|
||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Не совсем понимаю суть вопроса, можно немного прояснить в общих чертах.
что попалось на глаза
такой конструктор копирование не имеет смысла, компилятор сам сгенерирует что-то вроде
в чем смысл этой конструкции?
т.е. если список пустой то он ничего нового туда не добавит? |
||||||
|
|||||||
| toxx |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 2 Всего: 13 |
Хочу переделать моё n-мерное дерево в стиле Cи(мой 1й пост темы) на дерево в стиле C++. Попытки предпринял, но мне кажется получилось тоже что у меня и было. Но пока до конца не понимаю в какую сторону мне делать...
если количество сыновей у вершины не нулевое функция добавляет вершины...делаю рекурсией эти действия
Это сообщение отредактировал(а) toxx - 28.4.2010, 21:48 |
||||||
|
|||||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
а где тогда итераторы?
а если нулевое то ничего не происходит..это нормально? т.е. когда-то, в самом начале оно ведь нулевое? Добавлено через 54 секунды начните с интерфейса, придумайте интерфейс своему классу, реализуйте функции постышки, а потом думайте над их реализацией. |
||||
|
|||||
| toxx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 2 Всего: 13 |
azesmcar
На полу-C++... итераторы я не изучал, стараюсь без STL делать(поэтому полу-C++), но мне mes посоветовал без них пока сделать. т.е. не одна из реализации из этого поста не подходит? =( |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
не посоветовал, а согласился что для начала без них.. Доступ будет тогда осуществляться на прямую к структуре, как и в си стиле, также как и гарантом правильности все также программист. Отличие в "полу-С++" будет фактически лишь в организация кода по классам.. Добавлено через 2 минуты и 50 секунд
я уже писал что без итераторов в С++ стиль не получится, так как с одной стороны нельзя открывать доступ к внутренностям, а с другой мы как то должны передвигаться по ней.. Добавлено через 4 минуты и 59 секунд а чего не получается то ? для начала (я уже писал) что надо определиться со структурой дерева (в частности одно, дили двух направленное (сои ссылкой на родителя)), определить набор инструкций, т.е. интерфейс взаимодействия. |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
| toxx |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 2 Всего: 13 |
mes
Я 2й день перечитывал тему, читал посты темы, прикидывал ... и наконец все таки отвечу 1.Я не понимаю как можно в один класс записать всё моё дерево. 2.Подумал и решил, что все таки для моей простенькой задачи шашек попроще применить моё дерево в стиле... 3.Я давно уже определился со структурой дерева и интерфейсом, у меня никак не выходит реализация (1) пункта Структура данных и интерфейс у меня будет такой
azesmcar спасибо конечно, но мне до итераторов еще далеко наверно... идея у меня уже есть, но мешает ей двигаться вот такие вот мелкие проблемы... Добавлено через 9 минут и 12 секунд По сути я хочу реализовать вот такую картинку http://www.valar.ru/gallery/0410/ai.jpg Это сообщение отредактировал(а) toxx - 30.4.2010, 17:35 |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
в один никак.. Один класс/структура - ветвь/итератор , другой класс - набор функционала ммм... сейчас немного занят.. но тут есть поле для разворота |
|||
|
||||
| toxx |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 2 Всего: 13 |
mes
ой не дорос я еще до этого...всё таки нужно использовать, что я намудрил своим си- деревом =)
эмм, поле для разворота в смысле тема для беседы?=) |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
ага.. терь хоть понятно что Вам требуется.. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |