【问题标题】:How can we pass a 2D array/vector as a function parameter in C++? [duplicate]我们如何在 C++ 中将二维数组/向量作为函数参数传递? [复制]
【发布时间】:2020-04-02 18:36:20
【问题描述】:

尝试使用全局声明,但这对我没有用。

【问题讨论】:

  • 出于多种原因,您应该避免使用全局声明。如果您想在另一个函数中使用一个函数的某些属性,请将属性作为参数传递给该函数。
  • 这能回答你的问题吗? Passing a 2D array to a C++ function

标签: c++ 2d-vector


【解决方案1】:
int connection(vector< vector<int>> &gridOfNodes,int m,int n)
{
//Your code goes here

//Accessing Vector sample
if(gridOfNodes[i][j] == 1)
{

}
}



int main() 
{ 


 int n,m;
 cin>>n>>m;
 // initialize Vector
 vector<vector<int> > vec( n , vector<int> (m, 0));

for (int i = 0; i < n; i++) 
        for (int j = 0; j < m; j++)
            cin>>vec[i][j]; 

 //Function calling 
 cout << connection(vec,m,n);

 return 0; 
}

【讨论】:

  • 还值得在参数中添加一些缩进和const 以避免意外突变。
【解决方案2】:

二维数组:

如果您不希望在全局范围内定义它(第二维或两者都为 const),那么我假设您的函数在 main() 或其他函数的本地范围内 - 如果是的,那么只需定义尺寸并使用:

function(int array[dim1][dim2])

function(int array[][dim2], int dim1)

二维向量:

function(std::vector<std::vector<int>>const &vec)

向量数组:

function(std::array<std::vector<int>>const &vecarray)

请注意,仅当您通过引用传递 2D 向量时才需要使用 const 说明符。如果您按值传递它,将制作副本并且您的原始 2D 矢量将不会被修改。 (例如,当您从函数返回某些内容而不必担心其值在函数体内发生更改时)

【讨论】:

    猜你喜欢
    • 2022-08-09
    • 2020-06-06
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    • 2011-06-13
    • 2022-07-25
    相关资源
    最近更新 更多