У меня есть алгоритм, который вычисляет компоненты (байты) вектора вне порядка. Я храню вектор в файле, поскольку, когда я запускаю его для реального, вектор будет иметь длину в миллионы байтов. Но в качестве упрощенного примера я хотел бы начать с пустого файла:
-1 -1 -1 -1 -1 -1 -1 -1
Тогда мой алгоритм будет заполнять два значения за раз:
-1 -1 4 7 -1 -1 -1 -1
тогда
-1 -1 4 7 -1 -1 3 9
и т.д. до тех пор, пока все значения не будут заполнены. Возможно ли это сделать? Я пробовал использовать файлы с произвольным доступом, но когда вы используете метод seek(), он заполняет 0s для всех значений перед теми, которые я хочу редактировать, удаляя любые предыдущие вычисления, выполненные моим алгоритмом. Поскольку мне нужна эта программа для работы с большими последовательностями чисел, вытащить весь файл в память не вариант. Есть идеи?
Большинство файловых систем не являются действительно случайным доступом, поэтому с практической точки зрения трудно или невозможно изменить середину файла, не читая весь файл и не записывая его на диск. Вероятно, вам нужно будет читать в файле по одной секции за раз, соответствующим образом отредактировать этот раздел, а затем записать его обратно во временный файл. После того, как вы закончите, вы можете заменить исходный файл на временный файл.
На самом деле это не просто предложение. Извините, я не могу комментировать статусы
Откройте файл. Сохраните эти значения в памяти небольших фрагментов одновременно, а затем просто напишите в другой файл, освободив память и прочее в пути