将boost multi_array转换为其本机数组类型

时间:2017-03-15 17:15:16

标签: c++ boost boost-multi-array

我正在编写一个类,作为c ++类和传统c代码的中间人。 我一直在使用boost multi_array来简化很多代码。这个multararray声明如下:

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

但是,我遇到了一个问题,我需要将我的multi_array传递给具有类似于

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

我的multi_array大小为ROWS和COLS,但我不知道将mutli_array转换为数组的任何简单方法。有没有办法这样做?

1 个答案:

答案 0 :(得分:1)

由于boost::multi_array的存储顺序为well defined,您实际上可以安全地调用它:

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

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