Re: Быстрый поиск байта в фрагменитованном файле
От: watchmaker  
Дата: 23.12.15 08:28
Оценка:
Здравствуйте, _smit, Вы писали:


_>но, поскольку дефрагментация невозможна, я должен найти каким-то образом (последовательным или методом дихотометрии) номер фрагмента и смещение в buff_of_fragments[fr_nr][offset1] для позиции 1280.

_>Для начала, хотя бы, как быстро найти fr_nr?
Двоичный поиск, он же std::lower_bound, — хорошее решение.
Просто хранишь массив аккумулированных длин фрагментов и ищешь в нем смещение. Вернувшийся индекс и будет соответствовать fr_nr, а разница между искомым значением и найденным элементом — смещению внутри соответствующего фрагмента.
А если вдруг сам массив фрагментов меняется очень часто, то вместо массива аккумулированных длин используешь любое сбалансированное дерево поиска, но вроде тебе это пока не нужно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.