将多维向量(矩阵)传递给 C++ 中的函数

Passing a multidimensional vector (matrix) to a Function in C++

我在将多维数组从 main 传递给函数时遇到问题。这是问题的示例:

double function(int**);
int main(){
    vector< vector<int> > my_vec;
    double result;
    result = funtion(my_vec); //it doesnt recognize the type. my vec
    return 0;
}
double function(int**my_vec){
    // DOES STUFF WITH THE DATA
}

将矩阵传递给函数的正确方法是什么?

What is the correct way of passing the matrix to the function ??

function 的签名更改为:

double function(vector< vector<int> >& my_vec);

接受参数的正确方式是:

double function(vector<vector<int>> const &);

除非函数需要修改参数,在这种情况下使用:

double function(vector<vector<int>> &);

int** 类型签名适用于原始 C 样式数组:没有理由在这里丢弃有用的 C++ 容器。

Std::vector 不仅仅是一个数组。它是STL类型,模拟动态数组。您传递的是简单的二维数组,如 int arr[3][3]。要传递矢量,您需要将函数头更改为 double function(vector< vector<int>> &vec)(或者 double function(vector< vector<int>> vec) - 取决于您想要做什么)