将 boost multi_array 转换为其原生数组类型

Converting boost multi_array to its native array type

我正在编写一个 class 作为 c++ classes 和遗留 c 代码的中间人。 我一直在使用 boost multi_array's 来简化很多代码。此 mult_array 声明如下:

using Array = boost::multi_array<float,2>

但是,我 运行 遇到了一个问题,我需要将 multi_array 传递给签名类似于

的遗留函数
void function(float param[ROWS][COLS]);

我的 multi_array 大小为 ROWS 和 COLS,但我不知道有什么简单的方法可以将 mutli_array 转换为数组。有什么办法吗?

由于boost::multi_array的存储顺序是well defined,其实你可以这样调用它:

function((float (*)[COLS])array.data());

c_storage_order 是默认值,请确保在构造对象时不要使用任何其他内容。