在c++中,是通过值传递更好,还是通过引用到const传递更好?
我不知道哪种做法更好。我意识到,通过引用传递到const应该在程序中提供更好的性能,因为您没有对变量进行复制。
在c++中,是通过值传递更好,还是通过引用到const传递更好?
我不知道哪种做法更好。我意识到,通过引用传递到const应该在程序中提供更好的性能,因为您没有对变量进行复制。
当前回答
这取决于类型。这样就增加了必须进行引用和取消引用的小开销。对于大小等于或小于使用默认复制ctor的指针的类型,按值传递可能会更快。
其他回答
为小类型传递值。
但是,在c++ 11中,如果您要使用数据,则通过值传递,因为您可以利用move语义。例如:
class Person {
public:
Person(std::string name) : name_(std::move(name)) {}
private:
std::string name_;
};
现在调用代码会做:
Person p(std::string("Albert"));
并且只会创建一个对象,并直接移动到类Person中的成员name_中。如果传递const引用,则必须创建一个副本以将其放入name_中。
这取决于类型。这样就增加了必须进行引用和取消引用的小开销。对于大小等于或小于使用默认复制ctor的指针的类型,按值传递可能会更快。
通过引用传递比通过值传递更好。我在Leetcode上解lcs问题。它显示了TLE的传递值,但接受代码的传递引用。我花了30分钟才弄明白。
听起来你得到答案了。传递值是昂贵的,但是如果需要的话,可以给您提供一个副本。
作为一个规则,通过const引用传递更好。 但是如果你需要在本地修改你的函数参数,你最好使用按值传递。 对于一些基本类型,通过值传递和通过引用传递的性能通常是相同的。实际上,内部引用是由指针表示的,这就是为什么你可以期望,例如,对于指针来说,两个传递在性能方面是相同的,甚至通过值传递可以更快,因为不必要的解引用。