我在将多维数组传递给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
}
将矩阵传递给函数的正确方法是什么?
答案 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)
- 取决于您要执行的操作)