首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >function(vector<int> v)和function(vector<int>& v)的区别是什么?

function(vector<int> v)和function(vector<int>& v)的区别是什么?
EN

Stack Overflow用户
提问于 2015-07-21 23:26:17
回答 2查看 5.5K关注 0票数 0

当我尝试在C++中使用向量执行插入排序时,我发现当我使用时,它不能执行以下功能:

代码语言:javascript
复制
void ins_sort(vector<int> v){
    //function body
}

然而,当我执行以下操作时,它起作用了:

代码语言:javascript
复制
void ins_sort(vector<int>& v){
    //function body
}

有人能解释一下为什么吗?

EN

回答 2

Stack Overflow用户

发布于 2015-07-21 23:29:35

&允许您通过引用传递参数。也就是说,您可以在函数体中修改它们,并且在调用函数后仍然可以看到它们被修改。

如果没有&,您将按值传递参数。也就是说,向量将被复制,而您将在函数内部使用向量的副本。函数结束后,您将再次使用原始向量。

票数 4
EN

Stack Overflow用户

发布于 2015-07-21 23:30:21

基本上,按引用传递(&)传递相同的vector,而按值传递(no-&)传递向量的副本。如果vector包含很多项,则两者之间存在显著的性能差异。此外,如果点是执行插入排序,那么您可能希望对相同的向量进行排序,而不是对副本进行排序(除非您计划返回副本,这将导致另一次性能损失)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31543341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档