函数(向量<int> v)和函数(向量<int>&v)有什么区别?

Moh*_*kar 4 c++ function vector

在尝试使用C++中的向量执行插入排序时,我发现当我使用时,它没有执行该功能:

void ins_sort(vector<int> v){
    //function body
}
Run Code Online (Sandbox Code Playgroud)

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

void ins_sort(vector<int>& v){
    //function body
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下为什么吗?

Bli*_*ito 10

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

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