Вставьте содержимое вектора в другой вектор с определенным смещением.C++

Программы на C++. Форум разработчиков
Anonymous
Вставьте содержимое вектора в другой вектор с определенным смещением.

Сообщение Anonymous »

Без контекста, вот основной вопрос: я хочу вставить содержимое std::vector a {0, 3, 6, 8 в std::vectorfile_array)
RepackFile(data_file_data, file_section);
[/code]

Код: Выделить всё

FileSection
— это структура, содержащая важную информацию о файле, который я хочу переупаковать, например его смещение в data_file_data.
Вот функция, которая переупаковывает файлы:

Код: Выделить всё

void DictDataManager::RepackFile(std::vector &data_file_data, const FileSection &file_section)
{
std::vector file_data;
uint32_t file_data_size = is_compressed ? file_section.compressed_file_length : file_section.decompressed_file_length;
file_data.resize(file_data_size);

std::ifstream extracted_file(file_section.file_path);
extracted_file.read(reinterpret_cast(file_data.data()), file_data_size);
extracted_file.close();

if (is_compressed)
file_data = CompressDataBuffer(file_data, file_section.compressed_file_length);

// What now?
}
Проблема, например, в том, что у меня есть два файла, которые начинаются со смещения 0, но один файл имеет размер 37956 байт, а другой — 53856 байт. Данные для обоих одинаковы в первых 37956 байтах, поэтому я смогу без проблем перезаписать данные в data_file_data после того, как уже вставил данные первого файла, и теперь хочу вставить данные второго file.
Я пытался использовать функцию Insert() таким образом data_file_data.insert(data_file_data.begin()+file_section.offset, file_data.begin() , file_data.end());, но, к сожалению, это не перезаписывает какие-либо данные, а просто вставляет их, что дает мне вектор значительно большего размера, чем ожидалось, и, конечно, не восстанавливает исходный файл.
Итак, какая простая альтернатива мне действительно нужна — просто записывать данные с определенного смещения и в то же время динамически выделять вектору новый размер, например, Insert() сделал бы это?

Подробнее здесь: https://stackoverflow.com/questions/784 ... ain-offest

Вернуться в «C++»