递归中的引用
Refrences in recursion
我在此代码中使用了引用map<int ,int>
但是当我不使用引用时,映射不会递归填充。我已经解决了这个问题,但不知道为什么当我已经提供map<int ,int>
作为参数时需要使用引用。你能深入说明一下吗?
void util(Node* root,map<int,int> &m, int level) {
if (!root) return;
m[level]+=root->data;
util(root->right,m,level);
util(root->left,m,level+1);
}
void diagonalSum(Node* root) {
map<int,int> m;
util(root,m,0);
// cout<<m.size();
for(auto i=m.begin();i!=m.end();i++){
cout<<i->second<<" ";
}
cout<<"n";
}
不使用引用时,调用函数时会获得映射的副本。
来自评论: 如果按值传递,则每个函数调用都将收到映射的副本。修改副本不会修改原始副本。
相关文章:
- 棘手的按值传递和按引用递归问题传递
- 如果我们通过引用传递变量,则递归中使用的堆栈空间量是否为零?
- 递归中的引用
- 为什么当函数参数未定义为常量引用时存在无限递归?
- 尾递归,带有通过引用传递的向量
- C++ 引用类型作为递归函数参数
- 递归中的 C++ 引用(反转堆栈)
- 如何在递归函数中调用引用数组?
- 你能在递归 lambda 中捕获引用吗?
- 递归到迭代而不重新绑定引用
- 对具有传递引用参数的函数使用递归
- 静态短引用在递归函数中产生错误
- C++:使用递归和引用变量查找数组中的最大元素
- 在递归循环中条件修改的引用内存
- 如何在 c++ 中将内置堆栈作为对递归函数的引用传递
- 引用指针的递归调用和赋值
- 递归 lambda 通过引用
- 为什么通过引用传递可以修复我的递归错误
- 如何使用向量通过指针引用递归结构
- 通过引用递归函数传递字符串或流对象时出现的段错误