![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Бармалей |
|
|||
Unregistered |
Совственно вопрос изложен в теме как енто провернуть Заранее благодарен
|
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
А в чем проблема?
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Если дерево - STL'овский map, то берем итератор из "iter = begin()", и пока он не станет равным "end()" шагаем по дереву "iter++"; пару "ключ=>значение" получаем по "*iter" и сохраняем в файл. Дополнительно сохраняем перед началом дерева количество элементов.
Если надо потом загрузить, то грузим кол-во элементов и в цикле добавляем по "insert" каждую загружаемую пару "ключ=>значение". -------------------- ![]() |
|||
|
||||
Бармалей |
|
|||
Unregistered |
Baa
Проблема в том что я незнаю как правильно записать дерево чтобы его потом правильно же считатьmr.DUDA Не STL фсе ручками сделаноо |
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Дык если это ключ и значение, то самое простое - это INI файл.
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
RAN |
|
|||
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
P.S. Господа, в STL нет деревьев. Модератор: По-моему, это вопрос не совсем по C++ |
|||
|
||||
mr.DUDA |
|
||||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Хехехе, как раз таки и облом. Map и set хранят свои данные в виде сбалансированного двоичного дерева !!! Так что можно было б сделать в STL сие задание. А если и не в STL, то так:
Надеюсь, понятно объяснил ![]() ЗЫ, данная тема хоть и не относится чисто к C++, зато наиболее красиво дерево реализуется именно в C++. ЗЫ(2), можно найти инфу на http://www.codeguru.com/algorithms/index.shtml, и возможно ещё на http://www.codeproject.com. Это сообщение отредактировал(а) mr.DUDA - 5.9.2003, 23:05 -------------------- ![]() |
||||
|
|||||
RAN |
|
||||
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Кто-нибудь это понял ![]() Было две кошки Маруся и Муся, у них родились котатя, у тех, когда они выросли, тоже родились котята и т.д.
|
||||
|
|||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Нужны ещё комментарии или примеры ![]() Надеюсь, после этого принцип станет понятен... Извините, что не сохранял в XML, просто было бы ещё замудрёнее. Так хоть идею понять можно. Это сообщение отредактировал(а) mr.DUDA - 6.9.2003, 23:17 -------------------- ![]() |
|||
|
||||
RAN |
|
|||
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
mr.DUDA, только один вопрос: где использование
И ещё. Я, конечно, не лезу в стили программирования, но мне не понятно зачем использовать указатели в контейнерах. Почему ты пишешь list<CNode*>? Почему не просто list<CNode>? Ведь тебе потом приходиться это всё удалять. Если учесть, что STL ещё раз выделяет память под CNode* ... И ещё, я так понял, ты этот код не проверял. m_Children.insert(NewNode); работать не будет, ты наверное хотел написать m_Children.insert(m_Children.end(), NewNode);. Я, короче, по другому это видел. Вот тему организовал. Давай, заходи. Будем думу думать ![]() А между прочим человеку, ты единственный по теме ответил. Попытался предложить схему записи/чтения дерева. Но ему надо было двоичные данные хранить, а не строки. Как там быть? Теги твои могут оказаться данными (совпасть). А если записывать кол-во элементов, то будут необоснованные ограничения на кол-во записей. |
|||
|
||||
mr.DUDA |
|
||||||||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Нигде. Потому что:
вот. Насчёт
отчечу тем, что при использовании "list<CNode>" STL будет при добавлении ещё раз выделять память под весь объект CNode в конструкторе копирования. Что быстрее - выделить 4 байта под указатель, или N байт под весь объект ![]() Код набивал прямо в форуме, без проверки. Извиняйте. Показывал принцип работы, а не готовый сорц. Этим можно объяснить и "странноватый" контейнер CCat, который я привёл как пример узла дерева. И последнее,
Объект, читающий свои данные из файла, точно "знает", что будет прочитано в следующем байте: тэг начала списка, или внутренние данные объекта. Это, по ходу, определяется логикой работы схемы загрузки/сохранения, которую можно проектировать как угодно, лишь бы объект при загрузке соблюдал правильную очередность распределения данных из файла по своим полям (правильную - это такую же как при сохранении). Это сообщение отредактировал(а) mr.DUDA - 7.9.2003, 10:08 -------------------- ![]() |
||||||||
|
|||||||||
RAN |
|
||||
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Не используй STL.
|
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |