首页 新闻 会员 周边

C++ this 关键字使用问题

0
悬赏园豆:10 [已解决问题] 解决于 2022-08-25 19:14

在此代码中带有第四行的作用是什么?
class Solution {
public:
TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
this->preorder = preorder;
for(int i = 0; i < inorder.size(); i++)
dic[inorder[i]] = i;
return recur(0, 0, inorder.size() - 1);
}
private:
vector<int> preorder;
unordered_map<int, int> dic;
TreeNode* recur(int root, int left, int right) {
if(left > right) return nullptr; // 递归终止
TreeNode* node = new TreeNode(preorder[root]); // 建立根节点
int i = dic[preorder[root]]; // 划分根节点、左子树、右子树
node->left = recur(root + 1, left, i - 1); // 开启左子树递归
node->right = recur(root + i - left + 1, i + 1, right); // 开启右子树递归
return node; // 回溯返回根节点
}
};

作者:Krahets
链接:https://leetcode.cn/leetbook/read/illustration-of-algorithm/99ljye/

象羊的主页 象羊 | 初学一级 | 园豆:191
提问于:2022-08-24 16:43
< >
分享
最佳答案
0

buildTree函数的preorder参数的引用赋给类中的局部变量preorder。如果没有this指针就无法区分到底是参数的,还是类中含有的。

收获园豆:10
寂静的羽夏 | 小虾三级 |园豆:1805 | 2022-08-24 18:32

那我是不是把其中一个换个名字就不会有这种问题了

象羊 | 园豆:191 (初学一级) | 2022-08-24 20:10

@象羊: 嗯,是的,就可以不用使用this强调是类里面的成员了。

寂静的羽夏 | 园豆:1805 (小虾三级) | 2022-08-24 20:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册