
例如:
>我的列表数组:List< int> L [V];
>我的函数调用:dfs(L [v],k);
>我的函数定义:voID dfs(List< int> List,int index);
>我的函数原型:voID dfs(List< int> L,int);
(要么)
>我的列表数组:List< int> L [V];
>我的函数调用:dfs(L,k);
>我的函数定义:voID dfs(List< int> * L,int index);
>我的函数原型:voID dfs(List< int> *,int);
I wanted to kNow how to pass this array of List by reference to dfs function? Also,one of my frnd saID that by default it will be passed by reference.
不完全的.
首先,让我们忘记std :: List;这只是令人困惑的问题.
假装你正在传递一个int数组:
voID foo(int[] x);int main() { int x[5]; foo(x);} 这里没有引用,默认情况下会复制C参数,但是因为数组无法复制,并且因为数组的名称衰减到指向数组中第一个元素的指针的名称,所以你传递的是[副本] a]指针不是数组本身.
实际上,voID foo(int [] x)对于等效的,并且更清晰的voID foo(int * x)具有误导性的语法糖.
特别注意 – 在两种情况下 – 函数foo都不知道原始数组的维度.
但是,这有点老式,你可以将实际引用传递给数组:
voID foo(int (&x)[5]);int main() { int x[5]; foo(x);} 现在我们可以将相同的逻辑应用于std :: List的数组:
voID foo(std::List<int>*); // pointer to one or more Lists,ORvoID foo(std::List<int> (&)[5]); // reference to an array of five Lists
无论如何,混合标准容器和阵列似乎很奇怪;如果由于某种原因确实需要自动存储持续时间,则首选数组上的std :: vector,或者静态分配数组(如std :: array或以前的boost :: array)的包装器.
此外,您的调用语法错误.
My function call: dfs(L[v],k);
My function deFinition: voID dfs(List List,int index);
这会从列表数组中传递单个列表,并通过值/复制执行此 *** 作.
总结以上是内存溢出为你收集整理的c – 如何通过引用传递stdlib列表数组全部内容,希望文章能够帮你解决c – 如何通过引用传递stdlib列表数组所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)