Я бы хотел избежать ненужных копий. Я нацелен на что-то вроде:
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()
.
Этот вопрос связан не столько с тем, насколько важны эти накладные расходы. Скорее, мне просто интересно узнать, есть ли другой способ.