Re: Как организвать массив
От: Кодт Россия  
Дата: 20.08.09 15:52
Оценка:
Здравствуйте, _Lestat_, Вы писали:

_L_>Парсер должен быть быстрым + не очень хочется заморачиваться со всеми этими списками и сортировками. Контейнера типа map, как в C++ у меня нет. Есть элегантный выход из ситуации или все-таки придется заморачиваться?


На Си, что ли, пишешь? Посмотри тогда на гномовскую библиотеку контейнеров GLib. Чтобы не велосипедировать.

"Регион" в твоей терминологии — это кортеж (имя файла, номер строки, ...), да?
То есть, у нас не стоит вопрос о поиске диапазонов, а тем более каких-то многомерных фигур.
Это просто точки в хитром пространстве, над которыми определён линейный порядок. (Грубо говоря: можно отсортировать по имени файла, а в пределах одного файла — по номерам строк).

Таким образом, тебе нужен ассоциативный контейнер с быстрым доступом. Это или дерево, или хеш-таблица.

Кстати о хеш-таблице. Имена файлов прекрасно хешируются. Тут можно сделать прирост производительности — отдельно хранить табличку с именами файлов, и отдельно — тот самый ассоциативный контейнер, элементы которого — (указатель на имя файла в таблице, номер строки, ...)
Поиск, не требующий постоянного сравнения строк, — будет летать, даже если он будет линейным.
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.