将任意大小的数组传递给C ++函数

时间:2016-07-14 18:30:16

标签: c++ arrays function pointers parameter-passing

我知道您可以通过其他方式传递数组,例如:

  

returnType functionName(dataType array [] [10])

但是我对你事先不知道数组大小的情况感兴趣。我希望能够将行数和列数作为参数传递。

如何将任何大小的数组传递给C ++函数?我想按照以下方式做点什么:

void functionName(dataType array[][], int num_rows, int num_cols){
   // ***Some operation such as printing the array's contents***
}

2 个答案:

答案 0 :(得分:2)

有三种方法可以解决这个问题:

  1. 将指针传递给第一个以行和列大小为参数的元素。
  2. 如果在编译时已知数组大小,则可以使用模板。类似的东西:
  3. template <std::size_t W, std::size_t H> void func(Type (&array)[W][H]) {}

    1. 您使用2D矢量并将其传递给函数。但是如果你不需要调整单独的列的大小,它就不那么有效了。

答案 1 :(得分:1)

两种可能性:

  1. 使用向量向量,您甚至不必将大小作为额外参数传递:

    void functionName( std::vector<std::vector<dataType>>);

  2. 使用模拟二维数组的一维数组:

    void functionName( dataType [] array, int num_rows, int num_cols);

  3. 计算一维数组的索引,如下所示:

    int i = row_index * num_cols + column_index;