Я хочу прочитать N
байтов данных из файлового потока и добавить их в вектор.Допустим, у нас есть
basic_ifstream<uint8_t> myFileStream;
и
vector<uint8_t> myBuffer;
В настоящее время я делаю что-то вроде этого:
myBuffer.reserve(N);
for (int i=0; i<N; ++i)
{
uint8_t tmpByte;
myFileStream.read(&tmpByte, 1);
myBuffer.push_back(tmpByte);
}
, но это очень медленно.
Теперь я попытался myFileStream.read
скопировать данные прямо в вектор.Поскольку вектор хранит свои элементы в смежном месте хранения, я подумал, что что-то вроде этого должно быть возможным:
uint8_t* ptr = &myBuffer.back(); // there is already some elements in the buffer (I know)
ptr++; // first element after existing data
myBuffer.resize(myBuffer.size() + N);
myFileStream.read(ptr, N);
Но при этом я получаю ошибку времени выполнения (повреждение кучи).Что не так с этим решением?Или в любом случае есть лучший способ сделать это?