gpt4 book ai didi

c++ - 为什么按值传递而不是按常量引用传递?

转载 作者:可可西里 更新时间:2023-11-01 16:26:12 25 4
gpt4 key购买 nike

因为 const 引用与按值传递几乎相同,但没有创建拷贝(据我所知)。那么是否存在需要创建变量拷贝的情况(因此我们需要使用按值传递)。

最佳答案

有些情况下你不修改输入,但你仍然需要输入的内部拷贝,然后你还不如按值获取参数。例如,假设您有一个返回 vector 的排序拷贝的函数:

template <typename V> V sorted_copy_1(V const & v)
{
V v_copy = v;
std::sort(v_copy.begin(), v_copy.end());
return v;
}

这很好,但是如果用户有一个他们永远不需要用于任何其他目的的 vector ,那么您必须在此处制作一个可能不必要的强制拷贝。所以只需按值取参数:

template <typename V> V sorted_copy_2(V v)
{
std::sort(v.begin(), v.end());
return v;
}

现在,生成、排序和返回 vector 的整个过程基本上可以“就地”完成。

成本较低的示例是使用需要在算法过程中修改的计数器或迭代器的算法。同样,按值获取它们允许您直接使用函数参数,而不需要本地拷贝。

关于c++ - 为什么按值传递而不是按常量引用传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28138188/

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