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

时间:2015-02-03 19:59:56

标签: c++ c++11 multidimensional-array vector

我在将多维数组传递给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
}

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

3 个答案:

答案 0 :(得分:4)

  

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

function的签名更改为:

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

答案 1 :(得分:2)

接受论证的正确方法是:

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

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

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

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

答案 2 :(得分:0)

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