函数(vector<;int>;v)和函数(vector<;int>;v)之间有什么区别? 在C++中使用向量进行插入排序时,发现当我使用时,它没有执行函数: void ins_sort(vector<int> v){ //function body } void-ins\u排序(向量v){ //功能体 }
然而,当我做了以下工作时,它起了作用:函数(vector<;int>;v)和函数(vector<;int>;v)之间有什么区别? 在C++中使用向量进行插入排序时,发现当我使用时,它没有执行函数: void ins_sort(vector<int> v){ //function body } void-ins\u排序(向量v){ //功能体 },c++,function,vector,C++,Function,Vector,然而,当我做了以下工作时,它起了作用: void ins_sort(vector<int>& v){ //function body } void-ins\u排序(向量&v){ //功能体 } 有人能解释一下原因吗?通过&可以通过引用传递参数。也就是说,您可以在函数体中修改它们,并且在调用函数后仍然可以看到它们被修改 如果没有&,则是按值传递参数。也就是说,将复制向量,并且在函数内部使用向量的副本。函数结束后,您将再次使用原始向量。使用&可以通过引用传递参数。也就
void ins_sort(vector<int>& v){
//function body
}
void-ins\u排序(向量&v){
//功能体
}
有人能解释一下原因吗?通过
&
可以通过引用传递参数。也就是说,您可以在函数体中修改它们,并且在调用函数后仍然可以看到它们被修改
如果没有
&
,则是按值传递参数。也就是说,将复制向量,并且在函数内部使用向量的副本。函数结束后,您将再次使用原始向量。使用&
可以通过引用传递参数。也就是说,您可以在函数体中修改它们,并且在调用函数后仍然可以看到它们被修改
如果没有
&
,则是按值传递参数。也就是说,将复制向量,并且在函数内部使用向量的副本。函数结束后,您将再次使用原始向量。使用&
可以通过引用传递参数。也就是说,您可以在函数体中修改它们,并且在调用函数后仍然可以看到它们被修改
如果没有
&
,则是按值传递参数。也就是说,将复制向量,并且在函数内部使用向量的副本。函数结束后,您将再次使用原始向量。使用&
可以通过引用传递参数。也就是说,您可以在函数体中修改它们,并且在调用函数后仍然可以看到它们被修改
如果没有
&
,则是按值传递参数。也就是说,将复制向量,并且在函数内部使用向量的副本。函数结束后,您将再次使用原始向量。基本上通过引用传递(&
)传递相同的向量
,而通过值传递(no-&
)传递向量的副本。如果向量
包含大量项,则两者之间存在显著的性能差异。此外,如果点正在进行插入排序,您可能希望对相同的向量进行排序,而不是对副本进行排序(除非您计划返回副本,这将导致另一次性能损失)。基本上通过引用传递(&
)通过值传递相同的向量(无-&
)传递向量的副本。如果向量
包含大量项,则两者之间存在显著的性能差异。此外,如果点正在进行插入排序,您可能希望对相同的向量进行排序,而不是对副本进行排序(除非您计划返回副本,这将导致另一次性能损失)。基本上通过引用传递(&
)通过值传递相同的向量(无-&
)传递向量的副本。如果向量
包含大量项,则两者之间存在显著的性能差异。此外,如果点正在进行插入排序,您可能希望对相同的向量进行排序,而不是对副本进行排序(除非您计划返回副本,这将导致另一次性能损失)。基本上通过引用传递(&
)通过值传递相同的向量(无-&
)传递向量的副本。如果向量
包含大量项,则两者之间存在显著的性能差异。此外,如果该点正在执行插入排序,则您可能希望对同一向量进行排序,而不是对副本进行排序(除非您计划返回副本,这将导致另一次性能损失)。传递值vs传递引用使用向量&,您传递的是原始引用本身。而对于vector,您只是创建了一个副本(通过值传递)通过值与通过引用通过vector&,您传递的是原始引用本身。而对于vector,您只是创建了一个副本(通过值传递)通过值与通过引用通过vector&,您传递的是原始引用本身。而对于vector,您只是创建了一个副本(通过值传递)通过值与通过引用通过vector&,您传递的是原始引用本身。而对于vector,你只需要创建一个副本(传递值)True,我会编辑它。True,我会编辑它。True,我会编辑它。True,我会编辑它。True,我会编辑它。