gpt4 book ai didi

C++ 将 2d 数组(由 uniqe_ptr 引用)合并到 3d 数组中

转载 作者:行者123 更新时间:2023-11-28 03:20:18 25 4
gpt4 key购买 nike

我需要将三个 2D 数组合并为一个 3D 数组。

我正在使用 unique_ptr 来引用二维数组。

总的来说,我对智能指针和 C++ 还很陌生,所以这很可能是一个明显的错误。

int imgsize = 15;
std::unique_ptr<float[]> redptr(new float[imgsize]);
std::unique_ptr<float[]> greenptr(new float[imgsize]);
std::unique_ptr<float[]> blueptr (new float[imgsize]);

redptr = redChannel._data;
greenptr = greenChannel._data;
blueptr = blueChannel._data;

float * colourArr[3] = {redptr,greenptr,blueptr};

最佳答案

std::unqiue_ptr背后的想法是 std::unique_ptr对指向的对象具有 唯一所有权。构建发布的代码与这个前提相矛盾,因为另一个变量现在有一个指向 std::unique_ptr 拥有的对象的指针。 . 发布的代码是危险的,因为它是悬挂指针的潜在来源(一旦 std::unique_ptr 超出范围,指向的对象将被破坏,但 colourArr 的元素仍将指向,现在破坏,对象)。

而不是使用 std::unique_ptr并显式动态分配内存建议使用 std::vector<std::vector<float>> 反而。这将管理内存并通过 operator[] 提供数组样式访问:

// Construct a vector contain 3 elements,
// where each element is a vector containing 'imgsize' floats.
std::vector<std::vector<float>> colourArr(3, std::vector<float>(imgsize));

关于C++ 将 2d 数组(由 uniqe_ptr 引用)合并到 3d 数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15638018/

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