簡單類型(如int,焦炭,無效* ...等),你可以利用:: 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)寫一個循環來複制這些對象,從編曲到v
然後只需調用拷貝構造函數一個接一個
如
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每個對象都必須調用一個接一個,我肯定不會有一個更快的解決方案(即使你使用std ::複製())。
而上面的代碼在某些編譯器中與std :: copy相比可能會導致較小的代碼大小。
正如一個側面說明,在你的例子中,我甚至不會使用'assign',而是'vector'。 –