«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как эффективно загрузить файл в std::vector?

Как эффективно загрузить файл в std::vector?

Опубликовано 15 ноября 2024 г.
Просматривать:928

How to Efficiently Load a File into an `std::vector`?

Эффективная загрузка файла в std::vector

Для эффективной загрузки файла в std::vector нужно избегать ненужных копий и перераспределения памяти. Хотя первоначальный подход с использованием резерва и read() может показаться простым, сам по себе резерв() не меняет емкость вектора.

Канонический метод с использованием итераторов:

Канонический метод подход использует итераторы входного потока для удобного построения вектора из содержимого файла:

#include 
// ...

std::ifstream testFile("testfile", std::ios::binary);
std::vector fileContents((std::istreambuf_iterator(testFile)),
                               std::istreambuf_iterator());

Оптимизация для перераспределения:

Если минимизация перераспределения памяти имеет решающее значение, выделите место в векторе перед загрузкой содержимого файла :

#include 
// ...

std::ifstream testFile("testfile", std::ios::binary);
std::vector fileContents;
fileContents.reserve(fileSize);
fileContents.assign(std::istreambuf_iterator(testFile),
                    std::istreambuf_iterator());

Используя потоковые итераторы и предварительно выделяя память, когда это необходимо, эти подходы обеспечивают эффективную загрузку файлов в std::vector.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3