//例子来自于leetcode257题 BinaryTreePath 1 /**
 2  * Definition for a binary tree node.
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8  * };
 9  */
10 class Solution {
11 public:
12     vector<string> binaryTreePaths(TreeNode* root) {
13         vector<string> result;
14         if(root==NULL){
15             return result;
16         }
17         DFS(root,"",result);
18         return result;
19     }
20     void DFS(TreeNode* treenode,string tempStr,vector<string>& result){//想要将result的值传出去,需要使用引用。
21         if(treenode->left==NULL&&treenode->right==NULL){
22             result.push_back(tempStr+to_string(treenode->val));//C++中to_string可以将任意类型转化成string类型
23         }
24         if(treenode->left!=NULL){
25             DFS(treenode->left,tempStr+to_string(treenode->val)+"->",result);
26         }
27         if(treenode->right!=NULL){
28             DFS(treenode->right,tempStr+to_string(treenode->val)+"->",result);
29         }
30
31     }
32
33 };

  在函数DFS中,参数vector<string>&我们使用引用方式传参,这样在函数中操作的对象就是调用外面的那个对象本身。

  如果不写“&”,会产生两个影响:

  1.当你想要对这个参数进行修改时,在函数返回后,这个值不会改变。

  2.在做参数传递时,不加“&”,在传参过程中,会产生一个临时变量,会造成一定的效率浪费。

在以上代码中,如果不加上&,会使得返回的result结果内容始终为空。

ps:函数声明时,只是告诉编译器存在这个函数,这个时候可以不带参数名称,定义的时候必须实行函数本体,则必须加上参数名称。

转载于:https://www.cnblogs.com/timesdaughter/p/5318863.html

C++中的引用(257BinaryTreePath)相关推荐

  1. 取消对 null 指针“l”的引用。_C++中的引用

    当变量声明为引用时,它将成为现有变量的替代名称.通过在声明中添加"&",可以将变量声明为引用. #include using namespace std; int main ...

  2. 【C++基础学习】C++中的引用

    [导读]介绍C++引用的基本概念,通过详细的应用分析与说明,对引用进行全面.透彻地阐述 引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确.灵活地使用引用,可以使程序简洁.高效. 引用 ...

  3. 指针 与 swift 中的引用

    指针 如果你有 C,C++ 或者 Objective-C 语言的经验,那么你也许会知道这些语言使用指针来引用内存中的地址.一个 Swift 常量或者变量引用一个引用类型的实例与C语言中的指针类似,不同 ...

  4. 无法解析的外部符号 WinMain,该符号在函数 int __cdecl invoke_main(void) (?invoke_main@@YAHXZ) 中被引用

    无法解析的外部符号 WinMain,该符号在函数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 中被引用 (2)项目- ...

  5. 实现 对象在内存中的引用一致性 之第一步

    原委 废话不要,他们都该删. 虽然写了个 基于数据库的代码生成器 与大家分享,但并不擅长数据库开发:相反,面向对象才是我的爱. 多年的酝酿让我收获良多,直觉这是个令人激动的开发模式. 或许是因为高中学 ...

  6. 转 mvc项目中,解决引用jquery文件后智能提示失效的办法

    mvc项目中,解决用Url.Content方法引用jquery文件后智能提示失效的办法 这个标题不知道要怎么写才好, 但是希望文章的内容对大家有帮助. 场景如下: 我们在用开发开发程序的时候,经常会引 ...

  7. python中的引用、浅拷贝和深拷贝

    在python中,有一句话:"一切皆为对象,一切皆为对象的引用",所以 只要记住这句话就很容易清楚python中的引用.浅拷贝和深拷贝了. 1. 引用 python中的引用是经常使 ...

  8. 页面中如何引用外部的HTML(四种方法)

    页面中如何引用外部的HTML(四种方法) 一.总结 一句话总结:a.iframe标签        b.ajax引入代码片段        c.link import的方法导入        d.re ...

  9. 关于“无法解析的外部符号”和“该符号在函数_wmain 中被引用”的问题

    在VS2008和opendv的环境下: error LNK2019: 无法解析的外部符号_cvDestroyWindow,该符号在函数_wmain 中被引用 error LNK2019: 无法解析的外 ...

  10. java中是引用传递还是值传递....

    刚才与Z师兄聊天,他提问: 你说java中是引用传递还是值传递啊? 当时俺搞混了这个"传递"的意思, 本来以为是对象的实例化比如: abc a=new abc(); 这个a 是引用 ...

最新文章

  1. qt 找不到 -lpulse-mainloop-glib,找不到 -lpulse问题
  2. java HelloWorld 编程风格实践
  3. HR怎么从面试中了解程序员的真实水平?需要面试的程序员,注意了!
  4. python程序加密_项目源代码被好朋友“盗用”!让我痛心疾首!给Python源码加密!...
  5. Ubuntu配置maven
  6. 虫师Selenium2+Python_11、自动化测试项目实战
  7. ctr预估之特征工程
  8. 垃圾回收相关算法总结
  9. linux下php zipArchive采用ZipArchive::OVERWRITE失败,返回错误码:9
  10. mocano editor中使用代码比对功能
  11. 毕业生写论文必备!!超详细讲解参考文献格式
  12. c 显示服务器相关的图片到对话框,使用MFC CImage类绘制PNG图片时遇到的问题
  13. 换把人体工学椅,缓解久坐写代码的老腰吧~
  14. PS4 5.05安装Linux系统,PS4主机刷机教程以及游戏安装教程,到5.05 4.55 4.05等系统
  15. idea从插件市场或者外部插件库导入插件的方式
  16. Ubuntu16.04如何设置自动休眠时间
  17. 快递企业玩转微信扫一扫教程
  18. overhit用户服务器维护,overhit新手引导任务小技巧
  19. 神经网络适用于分类问题的最后一层-Softmax和交叉熵损失介绍及梯度推导
  20. 魔兽地图编辑器插件YDWE的使用与基本设置2之空格、复制、粘贴、撤销、重做键

热门文章

  1. 更改Visual Studio 2010/2012/2008的主题设置
  2. php XML文件解释类
  3. JQuery添加扩展方法(理解$.extend(),与$.fn.extend()方法区别)
  4. Berkeley DB——Database
  5. 一些经常会用到的vbscript检测函数
  6. 【数据挖掘知识点七】相关与回归分析
  7. Java实现从Html文本中提取纯文本
  8. ubuntu下部署eclipse集成hadoop\android\web\GCC开发环境小记
  9. pyhon制作word、excel、ppt转pdf转换器大作战
  10. c# winform实现2048游戏