我有我想用雙打的數組轉換爲雙打的載體的功能:的memcpy轉換陣列矢量
std::vector<double> ArrayToVector(const double* arr, int length)
{
std::vector<double> vec(length);
memcpy(&vec[0], &arr[0], length);
return vec;
};
但是當我運行:
int main()
{
double* x = new double[3];
x[0] = 2;
x[1] = 4;
x[2] = 6;
std::vector<double> y = ArrayToVector(x, 3);
for (int i = 0; i < 3; i++)
{
std::cout << y[i] << " ";
}
return 0;
}
我得到的輸出:
0 0 0
不是
2 4 6
爲什麼?
或者更好的std ::複製,甚至更好的初始化向量與兩個迭代器(即改編和編曲+長度) – Borgleader
@Borgleader,這真的是唯一的答案在這裏。它首先否定了對「ArrayToVector」的需求。甚至比調用函數需要更少的代碼字符。 – chris