C++ 如何将二维数组中单个列的整个元素传递给c+中的函数+;?

C++ 如何将二维数组中单个列的整个元素传递给c+中的函数+;?,c++,arrays,C++,Arrays,这就是我用Fortran一列一列地传递tm数组的整个数据的方式 MPI_ALLREDUCE(tm(:,1),ptm(:,1),nbins,MPI_DOUBLE_PRECISION,MPI_SUM,MPI_COMM_WORLD,ierr) MPI_ALLREDUCE(tm(:,0),ptm(:,0),nbins,MPI_DOUBLE_PRECISION,MPI_SUM,MPI_COMM_WORLD,ierr) MPI_ALLREDUCE(tm(:,-1),ptm(:,-1),nbins,MPI_D

这就是我用Fortran一列一列地传递tm数组的整个数据的方式

MPI_ALLREDUCE(tm(:,1),ptm(:,1),nbins,MPI_DOUBLE_PRECISION,MPI_SUM,MPI_COMM_WORLD,ierr)
MPI_ALLREDUCE(tm(:,0),ptm(:,0),nbins,MPI_DOUBLE_PRECISION,MPI_SUM,MPI_COMM_WORLD,ierr)
MPI_ALLREDUCE(tm(:,-1),ptm(:,-1),nbins,MPI_DOUBLE_PRECISION,MPI_SUM,MPI_COMM_WORLD,ierr)
<>这是我试图在C++中传递二维数组中的单个列的全部元素的方法。我无法传递特定列的全部元素

MPI_Allreduce(&MVCLUST->TM->tpm, &MVCLUST->TM->pml, MPI_DOUBLE,MPI::SUM,MPI_COMM_WORLD)

< C++ > 2D数组是行存储的,所以没有直接的方法来获取列,这意味着相邻的内存位置将包含行而不是列,这样就可以得到指针行而不是列。 因此,您可以遵循的方法是首先在简单的1-d数组中获取2d数组的列,然后传递该列。下面给出了示例代码:

void printcolumn(int* arr,int len)
{
    for(int i=0;i<len;i++)
    {
        std::cout<<arr[i]<<std::endl;
    }
}
int main()
{
  int arr[2][2] = {{2,1},{2,2}};
  //2 1
  //2 2
  int col1array[2];
  int cnt =0;
  for(int i=0;i<2;i++)
  {
      col1array[cnt]=arr[i][0];
      cnt++;
  }
  printcolumn(col1array,2);
  return 0;
}
void打印列(int*arr,int len)
{

对于(int i=0;该问题还应使用fortran和相关MPI标记进行标记。