sus*_*haw 1 c++ pointers const vector
我们可以在不使用任何额外空间的情况下交换向量v的元素并返回v吗?
vector<int>func(const vector<int>&v)
{
//write your code here
}
Run Code Online (Sandbox Code Playgroud)
该函数按值返回向量,这意味着它会复制输入。因此,您可以显式制作副本,修改副本并返回它。例如:
vector<int> func(vector<int> const& v) {
vector<int> u(v);
// modify u.
return u;
}
Run Code Online (Sandbox Code Playgroud)
也可以使调用者复制该参数vector<int> func(vector<int> u),但是禁用返回值优化,因此将复制2个向量(一个用于函数参数,另一个用于返回)。有关详细信息,请参见复制省略号:
在return语句中,当操作数是具有自动存储持续时间的非易失性对象的名称时,该对象不是函数参数或catch子句参数,并且具有与(cv-qualification)相同的类类型函数返回类型。复制省略的这种变体称为NRVO,“命名为返回值优化”。
要就地修改向量而不进行复制,该函数必须引用非const向量:
vector<int>& func(vector<int>& v) {
// modify v.
return v;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |