単純な型 (例: int、char、void* ...など) の場合、::memcpy を利用できます
int arr[] = { 1, 2, 3, 4, 5 };
const int CNT = sizeof( arr ) / sizeof( int );
QVector<int> v( CNT );
// memcpy may be faster than std::copy_n in some compiler
::memcpy( v.data(), arr, CNT * sizeof( int ) );
オブジェクト (例: std::string ) の場合、オブジェクトを arr から v にコピーするループを記述します。
次に、コピーコンストラクターを1つずつ呼び出します
例えば
std::string arr[] = { std::string("a"), std::string("b"), std::string("c") };
const int CNT = sizeof( arr ) / sizeof( std::string );
QVector<std::string> v( CNT );
for( size_t i = 0; i < CNT ; ++i )
v[i] = arr[i];
arr の各オブジェクトのコピー コンストラクターは 1 つずつ呼び出す必要があるため、より高速な解決策はないと確信しています ( std::copy() を使用しても)。
また、上記のコードは、一部のコンパイラで std::copy と比較すると、コード サイズが小さくなる場合があります。