【问题标题】:Passing a multidimensional vector (matrix) to a Function in C++将多维向量(矩阵)传递给 C++ 中的函数
【发布时间】:2015-02-03 19:59:56
【问题描述】:

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

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

【问题讨论】:

  • 重新声明函数以采用正确的类型引用。这两种类型(int**std::vector&lt;std::vector&lt;int&gt;&gt; 在字面上是完全不同的世界
  • 你绝对是对的!!现在我知道答案了,我不知道我为什么要尝试 int** !!
  • 如果您认为它可以解决您的问题,请accept 回答。它将在整个社区中识别正确的解决方案。这可以通过单击答案旁边的绿色复选标记来完成。请参阅此image 以供参考。干杯。

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


【解决方案1】:

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

function的签名改为:

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

【讨论】:

    【解决方案2】:

    接受参数的正确方式是:

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

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

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

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

    【讨论】:

    • 好的,是的,这完全有道理。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2015-06-12
      • 1970-01-01
      • 1970-01-01
      • 2014-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多