gpt4 book ai didi

c++ - 用于将数组转换为 vector 的 Memcpy

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:18:37 27 4
gpt4 key购买 nike

我有一个函数,我想用它来将 double 组转换为 double vector :

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

为什么?

最佳答案

你的问题是 memcpy 需要一个以字节为单位的大小,而不是元素的数量,所以你需要将第三个参数乘以 sizeof(double) 但实际上你应该做的是使用 vector 的构造函数它需要两个像这样的迭代器:

std::vector<double> y(x, x + 3);

这样你甚至不需要担心 sizeof 并且它更短!

或者,您可以使用 std::copy(如我的评论/另一个答案中所述,但无故更长)

关于c++ - 用于将数组转换为 vector 的 Memcpy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29708865/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com