C++ float 数组维度

标签 c++ arrays windows unix

我正在尝试使一些功能性的 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/

相关文章:

arrays - 从 ColdFusion 中的 Struct/Array 访问和设置变量

c++ - 一些 CPU 信息

c++ - 知道 istream 是否以 C++ 中的字符串开头的惯用方法?

c++ - 为什么按引用传递会导致崩溃(C++)?

c++ - 从 SMFL 到 SDL 2.0

c++ - 接受所有成员函数指针的模板(包括 CV 限定和 ref 限定)

创建数组并使用指针访问它们

c++ - 如何连接一个 const char 数组和一个 char 数组指针?

linux - AWS EC2 : Migrating from Windows to Linux Server

python - Pyinstaller key 环 Windows 32 位