![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Napalmx |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 15.9.2009 Репутация: нет Всего: нет |
Собственно вопрос. Имеется VirtualStringTree заполненный узлами, как от него получить указатель на узел (PVIrtualNode) зная индекс узла. Индекс узла вычисляется в теле программы. Заранее спасибо.
|
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
имхо, только перебором.
Что-то типа
Это сообщение отредактировал(а) kami - 16.9.2009, 12:12 |
|||
|
||||
| Napalmx |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 15.9.2009 Репутация: нет Всего: нет |
Этого как раз пытаюсь избежать... Узлов может быть достаточно большое количество. Список сортированный по определенному параметру, поэтому хочу организовать поиск делением пополам по этому же параметру. Для этого мне и нужно каждый раз получать узел-середину выбранного диапазона. Если искать узел перебором все плюсы данного алгоритма сходят на нет. |
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
Насколько большое? на моей машине (AMD turion 64x2 1.9 ГГц) поиск по дереву из 11 100 элементов (4 уровня вложения) происходит максимум за 1 миллисекунду, чем ближе к началу - тем быстрее (не тики же считать Вот другой код, состряпанный сегодня на основе исходников VT (возможно, неоптимальный и некрасивый, но зато выполняется за 0 миллисекунд на том же дереве, разницу меньше 1мс считать просто лень).
|
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
мда... погорячился. С одним уровнем в 11 000 нодах поиск идет за 600-700 мс первым кодом и прежние 0 мс вторым... Видимо, второй код оптимальнее для этой задачи. Это сообщение отредактировал(а) kami - 17.9.2009, 22:23 |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
имхо проще унаследовать данный виртуал , и при добавлении нового итема,
записывать индекс его и указатель на итем в отдельную структуру..... -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Napalmx |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 15.9.2009 Репутация: нет Всего: нет |
Видимо так и придется перебирать... Просто я с компонентом работаю недавно, рассчитывал что есть какой-то метод или механизм для реализации этой задачи. Всем спасибо.
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |