>백엔드 개발 >C++ >불필요한 오버헤드 없이 파일을 std::Vector로 효율적으로 읽는 방법은 무엇입니까?

불필요한 오버헤드 없이 파일을 std::Vector로 효율적으로 읽는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-10 21:35:031048검색

How to Efficiently Read Files into std::vector Without Unnecessary Overhead?

파일을 std::Vector로 읽는 대체 방법

파일을 std::Vector로 읽는 방법 효율적으로 데이터 처리 작업에 필수적입니다. 그러나 Reserve(), resize() 등 일부 메서드는 요소 초기화로 인해 추가 오버헤드가 발생합니다. 이러한 이유로 대체 방법이 선호될 수 있습니다.

이러한 방법 중 하나는 std::istreambuf_iterator 클래스의 반복자를 활용하는 것입니다. 이 접근 방식을 사용하면 불필요한 복사본을 제거하고 파일 내용에 직접 액세스할 수 있습니다. 이 접근 방식의 표준 형식은 다음과 같습니다.

#include<iterator>
// ...

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

재할당을 방지하려면 사전에 벡터에 공간을 확보하는 것이 좋습니다.

#include<iterator>
// ...

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

위 내용은 불필요한 오버헤드 없이 파일을 std::Vector로 효율적으로 읽는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.