Jak bezpośrednio odczytać ogromny fragment pamięci do std :: vector?

Mam ogromną ciągłą tablicęx że jafread z pliku.

Jak upuścić ten fragment dostd::vector<>? Innymi słowy, wolę mieć rezultatstd::vector<> zamiast tablicy, ale chcę, aby wynikowy kod C ++ był tak wydajny, jak ta zwykła wersja C, która upuszcza fragment bezpośrednio do tablicy.

Od przeszukania myślę, że być może będę musiał użyć nowego miejsca w jakiejś formie, ale nie jestem pewien co do kolejności połączeń i kwestii własności. Czy muszę się martwić o problemy z wyrównaniem?

Testuję dla zT = unsigned, ale oczekuję, że rozsądne rozwiązanie zadziała dla każdej struktury POD.

using T = unsigned;
FILE* fp = fopen( outfile.c_str(), "r" );
T* x = new T[big_n];
fread( x, sizeof(T), big_n, fp );

// how do I get x into std::vector<T> v
// without calling a gazillion push_backs() or copies ?!?

delete[] x;
fclose( fp );

questionAnswers(2)

yourAnswerToTheQuestion