Carregando eficientemente um arquivo em um std::vector
Para carregar eficientemente um arquivo em um std::vector
Método canônico usando iteradores:
O canônico abordagem emprega iteradores de fluxo de entrada para construir convenientemente o vetor a partir do conteúdo do arquivo:
#include// ... std::ifstream testFile("testfile", std::ios::binary); std::vector fileContents((std::istreambuf_iterator (testFile)), std::istreambuf_iterator ());
Otimizando para realocações:
Se minimizar as realocações de memória for crucial, aloque espaço no vetor antes de carregar o conteúdo do arquivo :
#include// ... std::ifstream testFile("testfile", std::ios::binary); std::vector fileContents; fileContents.reserve(fileSize); fileContents.assign(std::istreambuf_iterator (testFile), std::istreambuf_iterator ());
Ao utilizar iteradores de fluxo e pré-alocar memória quando necessário, essas abordagens oferecem carregamento eficiente de arquivos em um std::vector
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3