![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Vitaly |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 16.8.2004 Репутация: нет Всего: нет |
Приветствую всех участников форума.
Мне нужен совет. В программе на VC++ в tree control нужно выводить дерево примерно следующего вида: мир- Африка Евразия Юж. Америка ...... Антарктида Сев. Америка -----США ....... Канада---- Монреаль ..... Торонто Это только прмер Как лучше сохранить эти данные? Многомерный массив -- нерационально, ...? Я написал класс ветки с параметрами : имя элемента, его начало в файле, длина. Думаю стоит добавить член указывающий на родителя данной ветки и создавать одномерные массивы таких классов. Например (массив 1 - континенты, 2-й страны, и т.д.) А как думаете вы? Спасибо. |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
я использывал std:map, и пихал туда свою структуру, название, указатель на мап нижнего уровня и позиция.
в результате получилось что я легко мог модифицировать дерево вытаскивая позицию из ассоциативного массива по названию пункта а для сохранения потом можно использовать сохранения памяти структур... если чучуть помучаться можно вообще структуру переделать в классный класс который будет все делать за тебя... -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Vitaly |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 16.8.2004 Репутация: нет Всего: нет |
А можно подробнее про std:map?
что это? Или линк об этом? |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
Vitaly, про это у нас на форуме куча тем, просто используйте поиск...
мап хорошо, на мой вгляд, использовать для работы с деревом..... и если его приминить к хорошо продуманой структуре то можно организовать и сохранение данных... Добавлено @ 15:36 еще в факю у нас что-то было или про стл или про мап, немпомню, зайдите туда -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Mad |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 7 Всего: 19 |
Step
Опять вы все усложнаете TreeControl и так хранит все дерево |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
Mad, только работать с ним не удобно... постоянно нужно хранить позиции либо их искать... вот я предлагаю хранить это в мапе
Добавлено @ 16:10 Mad, давайте свои идеи.... интересно ведь.... и давайте на ты -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Mad |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 7 Всего: 19 |
Step
Как работать с деревом зависит от того, какие операции пользователя подразумеваются Vitaly Опиши поподробней, че юзер у тя делать то с этим деревом будет ? |
|||
|
||||
| Vitaly |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 16.8.2004 Репутация: нет Всего: нет |
Есть файл (~90 MB ASCII), каждая строка 132 байта. В этой строке информация записана по определенному стандарту. Т.Е. 1-й символ например обозначает планету(он во всех стоках первый и длина его 1 символ) например Земля(буква З); далее со 2-го по 4-й символ идет код зоны (ЕВР - Европа, АФР-африка и т.д.) , после страна (АНГ-Англия), города и т.д. Так вот, программа должна построить дерево файла для облегчения понимания информации в нем находящейся. Второй этап - это пользователь щелкнув правой кнопкой мыши может перенести любую ветку с нужной инфой например в Excel, Oracle и т.д. Я думаю что такой интерфейс будет удобнее чем работать с этим текстовым файлом. Если кого интерисует формат файла так это ARINC - 424. При желании могу скриншот показать. |
|||
|
||||
| Mad |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 7 Всего: 19 |
Vitaly
Дополнительной структуры для хранение данных тебе, в данном слючае, не надо. При правом клике можно получить HTREEITEM, по которому кликнули, и от него вытянуть как родителей, так и детей. CTreeCtrl::GetParentItem вернет родительский элемент CTreeCtrl::GetNextItem предаеш TVGN_CHILD для получения первого дитя, затем TVGN_NEXT для последовательного получения всех детей. |
|||
|
||||
| Vitaly |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 16.8.2004 Репутация: нет Всего: нет |
Спасибо Mad думаю так действительно попроще будет |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |