¿Cómo leer directamente una gran parte de la memoria en std :: vector?

Tengo una enorme matriz contiguax que yofread de un archivo.

¿Cómo puedo dejar caer este trozo en unastd::vector<>? En otras palabras, prefiero tener el resultado para estar enstd::vector<> en lugar de la matriz, pero quiero que el código C ++ resultante sea tan eficiente como esta versión C simple que coloca el trozo directamente en la matriz.

Después de buscar, creo que debo usar la ubicación nueva en alguna forma, pero no estoy seguro de la secuencia de llamadas y los problemas de propiedad. Además, ¿debo preocuparme por los problemas de alineación?

Estoy probando conT = unsigned, pero espero que una solución razonable funcione para cualquier estructura 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 );

Respuestas a la pregunta(2)

Su respuesta a la pregunta