Я бы хотел избежать ненужных копий. Я стремлюсь к чему-то вроде:
std::ifstream testFile( "testfile", "rb" );
std::vector<char> fileContents;
int fileSize = getFileSize( testFile );
fileContents.reserve( fileSize );
testFile.read( &fileContents[0], fileSize );
(что не работает, потому что reserve
фактически ничего не вставляет в вектор, поэтому я не могу получить доступ к [0]
).
Конечно, std::vector<char> fileContents(fileSize)
работает, но есть издержки при инициализации всех элементов (fileSize
может быть довольно большим). То же самое для resize()
.
Этот вопрос не столько о том, насколько важны эти накладные расходы. Скорее, мне просто интересно узнать, есть ли другой способ.