我有我想用双打的数组转换为双打的载体的功能:的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