Как оптимально обойти несколько файлов c одновременным их изменением?
Есть три разных файла (F1, F2, F3) более 100 полей каждый, но с присутствием трех обязательных полей dep_no user_id & code (dep_no и user_id входит в составной ключ, можно позиционироваться как по [user_id] так и по [dep_no : user_id].
Нужно последовательно обойти эти файлы (сперва F1,потом F2 и F3... хотя порядок значения не нимеет), и если code в одном из них !=0, то это значение перенести в остальные файлы с таким же user_id с минимальным обращением к диску.
Допустимые операции: Locate(key) - позиционирование по ключу без чтения записи (позволяет узнать есть ли такая запись), First() - выбрать первую запись и прочесть Next( ) то же но следующую ifEOF() проверка на конецфайла getRecNo() - получение физ номера setRecNo() позиционирование по физ номеру.
Принципиально, можно исп STL но записей в файле много (неск млн), в некоторых файлах user_id не уникальный ключ.
Напрашивается самый простой вариант: сперва последовательно обходим первый файл F1, если находим code>0 то по user_id позиционируемся в F2,F3 и делаем Update. Но когда уже будем обходить F2, то дойдя до user_id c code>0 эта запись уже могла быть проабдейчена в F1. Очень жесткие требования по производительности. Тут можно использовать std::set, добавлять проабдейченные user_id в set и проверять их наличие при обходе файлов F2 & F3