gpt4 book ai didi

c++ - 将 const float* 转换为 std::array

转载 作者:搜寻专家 更新时间:2023-10-31 00:29:01 26 4
gpt4 key购买 nike

我有一个 const float* 指向一个巨大的数组,并希望能够通过 std::array 访问元素。做这个的最好方式是什么?尽可能不复制元素。

谢谢!

最佳答案

为了使用std::array,您需要在编译时知道数组的大小。您创建一个空数组并使用 std::copy 将元素复制到数组中。

如果使用 const float* 的代码在运行时只知道该大小,那么您不能使用 std::array 而必须使用 std: : vector std::vector 有一个构造函数,您可以将指向范围开始和结束的指针传递给该构造函数以将其复制到其中。

请注意,在这两种情况下,容器都拥有原始元素的拷贝

Without copying the elements if possible.

不,那是不可能的。 C++ 标准容器旨在拥有它们的内容,而不仅仅是代表它们的 View 。

下面是一个例子来说明区别:

#define SIZE 10 // let's assume some C or legacy code which uses macros

// ...

void f(const float* arr)
{
// size is known at compile time
std::array<float, SIZE> a;
std::copy(arr, arr + SIZE, begin(a));
}

void g(const float* arr, int size)
{
// size is only known at runtime
std::vector<float> v(arr, arr + size);
}

关于c++ - 将 const float* 转换为 std::array<float, ...>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43028542/

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