我们如何在 C++ 中将二维数组/向量作为函数参数传递? [复制]

Posted

技术标签:

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

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

【问题讨论】:

出于多种原因,您应该避免使用全局声明。如果您想在另一个函数中使用一个函数的某些属性,请将属性作为参数传递给该函数。 这能回答你的问题吗? Passing a 2D array to a C++ function 【参考方案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 矢量将不会被修改。 (例如,当您从函数返回某些内容而不必担心其值在函数体内发生更改时)

【讨论】:

以上是关于我们如何在 C++ 中将二维数组/向量作为函数参数传递? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何将 C# 中的二维数组传递给 C++ DLL?

C++ 数组与字符串⁽²³⁾|函数与数组

在 C++ 中将数组作为函数参数传递

C++中关于属性向量的查询

在 C++ 中将不同大小的常量数组作为函数参数传递

C++二维数组作为函数参数