gpt4 book ai didi

C++ float 数组维度

转载 作者:行者123 更新时间:2023-11-28 04:52:46 26 4
gpt4 key购买 nike

我正在尝试使一些功能性的 Unix c++ 适应 Windows 环境。

在原代码中,有:

float *drowPtrs[_imageRows];

为了将其移动到 Windows,我已将其调整为:

float *drowPtrs = new float[_imageRows];

但是,在函数的后面,有这一行:

 float &otherDistance = drowPtrs[y][x];

很明显,我刚刚将 drowPtrs 初始化为一维数组,所以这会出错。

编辑:正如所指出的,这实际上是一个 c++ 语法问题,而不是 Unix 到 Windows 的问题。下面的答案很有效。

最佳答案

这一行:

float *drowPtrs[_imageRows];

...如果 _imageRows 不是编译时常量,则在标准 C++ 中是不允许的。这可能是由于 GCC Variable-Length Arrays extension 而编译的.

这“声明”了一个指向 float 大小为 _imageRows 的指针数组。

最好的解决方案是切换到 vector :

std::vector<float*> drowPtrs(_imageRows);

如果你想要一个二维的 float 组,那就更好了:

std::vector<std::vector<float>> drowPtrs(_imageRows);

另一种解决方案是动态分配这个数组:

float **drowPtrs = new float*[_imageRows];

...但是您应该将其放入 unique_ptr 以避免必须手动管理内存:

std::unique_ptr<float*[]> drowPtrs(new float*[_imageRows]);

...或者如果你真的不能,那么你需要在完成后手动删除它:

delete[] drowPtrs;

关于C++ float 数组维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47811013/

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