gpt4 book ai didi

c++ - C++中按值传递和按引用传递的区别

转载 作者:太空宇宙 更新时间:2023-11-04 15:04:28 25 4
gpt4 key购买 nike

我想知道以下两个函数中哪个函数在时间和空间方面效率最高。他们都检查堆栈中某个元素的存在。第一个使用按值传递机制,而第二个使用按引用传递。我可能是错的,但我认为按值传递机制隐式复制参数,而在按引用传递中我们明确地这样做。

第一个版本按值传递:

 template<class T>
bool find (stack<T> source, T value)
{
while (!source.isEmpty() && source.top() != value)
source.pop();

if (!source.isEmpty())
return true;

return false;
}

第二个版本按引用传递:

template<class T>
bool find (const stack<T> &source, T value)
{
stack<T> temp = source;
while (!temp.isEmpty() && temp.top() != value)
temp.pop();

if (!temp.isEmpty())
return true;

return false;

最佳答案

如果您打算在函数内部创建一个本地拷贝,请使用按值传递。它更简单,通常更简单。

附言当您返回 bool 结果时,您通常不需要 if 语句。

return !source.isEmpty();

关于c++ - C++中按值传递和按引用传递的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20130482/

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