我有两个变量:
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 相同的位置?这些调用是否等效?