将多维向量(矩阵)传递给 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)
- 取决于您想要做什么)
我在将多维数组从 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)
- 取决于您想要做什么)