Я бы сказал так. Если один считать и потом нужно получать только доступ к какому либо объекту то вектор. Если же нужно потом постоянно добавлять, удалять, вставлять в середину - то список.
Типу в оригинале это сделано как Data* data = new Data[header.count]; И stream.read((char*)data, sizeof(Data) * header.count); Ну это примерно так происходит.
Типу в оригинале это сделано как Data* data = new Data[header.count]; И stream.read((char*)data, sizeof(Data) * header.count); Ну это примерно так происходит.