Здравствуйте, Pavel Dvorkin, Вы писали:
Это задача построения базы данных только для чтения. К строкам имеет весьма опосредованное отношение.
Мы читаем байты из потока, разбивая на блоки по разделителям и организуем в таблицу. После этого создаем вспомогательные структуры в которых храним порядок для первых трех столбцов и структуру для ускорения фильтрации. Результат запроса у нас — набор блоков, которые мы отдаем в поток. Все.
Ни одной операции со строками нет. Т.е. задача совершенно нерелевантна обсуждаемым вопросам.
Теперь моя задача.
Есть текст (не разделен на строки одинаковой длины), который можно редактировать. Т.е. вставлять, удалять, добавлать в начало, в конец символ/блок символов. Должен поддерживаться "бесконечный" (пока есть свободная память) undo/redo на каждое изменение + дерево версий. Также, желательно, иметь возможность сравнивать версии. Понятно, что для хранения версии следует занимать разумный объем, сопоставимый с объемом изменений сделанных в этой версии, а не хранить весь текст.
Я, на самом деле, не понял, зачем вы поставили свою задачу. Надеюсь, что моя поможет вам переключиться с проблем, которые не связаны с операциями над строками, на проблемы, которые с этими операциями связаны.
... << RSDN@Home 1.2.0 alpha 4 rev. 1228>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll