【发布时间】:2012-11-17 08:52:30
【问题描述】:
我有两个变量:
boost::array my_boost_array_variable_1<float, 3>;
boost::array my_boost_array_variable_2<float, 3>;
现在我想调用具有以下签名的 C 函数:
int MPI_Allreduce ( void *sendbuf, void *recvbuf, ...);
我想将我的my_boost_array_variable_1 和my_boost_array_variable_2 的特定元素的地址作为MPI_Allreduce 的第一个和第二个参数传递:
MPI_Allreduce(&my_boost_array_variable_1[2],
&my_boost_array_variable_2[2], ...
或者我应该这样做:
MPI_Allreduce(my_boost_array_variable_1.c_array() + 2,
my_boost_array_variable_2.c_array() + 2, ...
更新: C 函数需要一个连续的数据块,从 void *sendbuf 开始。这里的问题是这两个调用在这方面是否正确。 &my_boost_array_variable_1[2] 是否指向与 my_boost_array_variable_1.c_array() + 2 相同的位置?这些调用是否等效?
【问题讨论】:
标签: c++ c arrays boost parameter-passing