gpt4 book ai didi

C++ : function gets pointer or refernce

转载 作者:行者123 更新时间:2023-11-28 06:16:45 25 4
gpt4 key购买 nike

对于函数何时应该获取指针或引用,我不太清楚。

假设我正在实现 BFS。这是我的实现:

// Assuming There is a class Node :
class Node {
public:
int val;
bool visited;
list<Node*> neighbours;
};

void BFS (Node* root) {
if(root == NULL) {
return ;
}

queue<Node*> Q;
Q.push(root);

while(!Q.empty()){
Node* temp = Q.front();
Q.pop();

for(list<Node*>::iterator it = root->neighbours.begin() ; it != root->neighbours.end() ; it++){
if((*it)->visited == true) continue;
Q.push((*it));
(*it)->visited = true;
}

if(!Q.empty()){
cout << temp->val << ",";
} else {
cout << temp->val << endl;
}
}
}

我的问题是:函数 BFS 应该获取指针还是引用,为什么?

另外,我很想听到更多关于实现 itslef 的评论。

非常感谢!

最佳答案

使用指针作为函数参数可能有不同的方法和不同的原因

  1. 如果您要在 BFS 函数中进行指针运算,您应该使用指针作为参数。
  2. 有时检查指针是否为空并根据它执行一些操作很有用。

这似乎不是使用指针作为参数的重要原因,但 null 可以在其上保存非常重要的信息。例如,有二叉搜索树实现,其中 null 指针表明节点是叶子。

在您的示例中,您还检查 root 是否为 null 并在这种情况下返回。

关于C++ : function gets pointer or refernce,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30131425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com