gpt4 book ai didi

C++,什么时候应该返回引用?

转载 作者:行者123 更新时间:2023-11-27 22:54:57 25 4
gpt4 key购买 nike

class Node{   
private:
vector<Node*> children;

public:
vector< Node* > getChildren ();
//or
vector< Node* >& getChildren();
}

在 Main 函数的某处我有 STL 排序:

**stl::sort((n->getChildren()).begin(),(n->getChildren()).end(),comp);**

问题来了,如果使用 vector< Node* > getChildren() 代码会出现多余的问题,只有使用 vector< Node* >& getChildren() 才有效。我很困惑,为什么在这种情况下只有引用有效?

最佳答案

当您不返回引用时,getChildren 将在每次调用时返回 vector 的新拷贝。

这意味着在这一行中:

stl::sort((n->getChildren()).begin(),(n->getChildren()).end(),comp);

第一次调用 getChildren 返回的拷贝与第二次调用 getChildren 的拷贝不同。这意味着 begin()end() 位于不同的 vector 上,因此您永远无法从一个 vector 迭代到另一个 vector 。

当您返回一个引用时,两个调用都返回对同一 vector 的引用,因此您可以从 begin() 迭代到 end()

关于C++,什么时候应该返回引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34013463/

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