| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > хранилище для элементов дерева |
| Автор: Vitaly 26.10.2004, 13:41 |
| Приветствую всех участников форума. Мне нужен совет. В программе на VC++ в tree control нужно выводить дерево примерно следующего вида: мир- Африка Евразия Юж. Америка ...... Антарктида Сев. Америка -----США ....... Канада---- Монреаль ..... Торонто Это только прмер Как лучше сохранить эти данные? Многомерный массив -- нерационально, ...? Я написал класс ветки с параметрами : имя элемента, его начало в файле, длина. Думаю стоит добавить член указывающий на родителя данной ветки и создавать одномерные массивы таких классов. Например (массив 1 - континенты, 2-й страны, и т.д.) А как думаете вы? Спасибо. |
| Автор: Step 26.10.2004, 13:59 |
| я использывал std:map, и пихал туда свою структуру, название, указатель на мап нижнего уровня и позиция. в результате получилось что я легко мог модифицировать дерево вытаскивая позицию из ассоциативного массива по названию пункта а для сохранения потом можно использовать сохранения памяти структур... если чучуть помучаться можно вообще структуру переделать в классный класс который будет все делать за тебя... |
| Автор: Vitaly 26.10.2004, 15:23 |
| А можно подробнее про std:map? что это? Или линк об этом? |
| Автор: Step 26.10.2004, 15:27 |
| Vitaly, про это у нас на форуме куча тем, просто используйте поиск... мап хорошо, на мой вгляд, использовать для работы с деревом..... и если его приминить к хорошо продуманой структуре то можно организовать и сохранение данных... Добавлено @ 15:36 еще в факю у нас что-то было или про стл или про мап, немпомню, зайдите туда |
| Автор: Mad 26.10.2004, 16:00 |
| Step Опять вы все усложнаете TreeControl и так хранит все дерево |
| Автор: Step 26.10.2004, 16:08 |
| Mad, только работать с ним не удобно... постоянно нужно хранить позиции либо их искать... вот я предлагаю хранить это в мапе Добавлено @ 16:10 Mad, давайте свои идеи.... интересно ведь.... и давайте на ты |
| Автор: Mad 26.10.2004, 16:42 |
| Step Как работать с деревом зависит от того, какие операции пользователя подразумеваются Vitaly Опиши поподробней, че юзер у тя делать то с этим деревом будет ? |
| Автор: Vitaly 27.10.2004, 09:37 | ||
Есть файл (~90 MB ASCII), каждая строка 132 байта. В этой строке информация записана по определенному стандарту. Т.Е. 1-й символ например обозначает планету(он во всех стоках первый и длина его 1 символ) например Земля(буква З); далее со 2-го по 4-й символ идет код зоны (ЕВР - Европа, АФР-африка и т.д.) , после страна (АНГ-Англия), города и т.д. Так вот, программа должна построить дерево файла для облегчения понимания информации в нем находящейся. Второй этап - это пользователь щелкнув правой кнопкой мыши может перенести любую ветку с нужной инфой например в Excel, Oracle и т.д. Я думаю что такой интерфейс будет удобнее чем работать с этим текстовым файлом. Если кого интерисует формат файла так это ARINC - 424. При желании могу скриншот показать. |
| Автор: Mad 27.10.2004, 12:31 |
| Vitaly Дополнительной структуры для хранение данных тебе, в данном слючае, не надо. При правом клике можно получить HTREEITEM, по которому кликнули, и от него вытянуть как родителей, так и детей. CTreeCtrl::GetParentItem вернет родительский элемент CTreeCtrl::GetNextItem предаеш TVGN_CHILD для получения первого дитя, затем TVGN_NEXT для последовательного получения всех детей. |
| Автор: Vitaly 27.10.2004, 15:19 | ||
Спасибо Mad думаю так действительно попроще будет |