4 c++ vector pass-by-reference
我不确定我的方法是否正确。由于我v通过引用传递 vector Function,在它的执行之后,vector 的内容会改变。
如果我不能直接在 vector 上工作v并决定使用临时 vector怎么办temp。分配给v我的临时通过v = temp正确吗?不会参考v点在执行后将被清除的某些内存Function吗?
void Function(std::vector<bool> &v) {
std::vector<bool> temp(v.size(), false);
// some operations on vector temp
// ...
v = temp;
}
Run Code Online (Sandbox Code Playgroud)
不会参考
v点在执行后将被清除的某些内存Function吗?
否。对于v = temp;,v是从 分配的副本temp。然后v将包含与 相同的内容temp,但与无关temp;temp是一个本地对象,稍后会被销毁,但传入的参数不会受到影响。
顺便说一句:由于temp是一个本地对象,当退出函数时将被销毁,因此从它复制可能效率低下。你可以从它移动:
v = std::move(temp);
Run Code Online (Sandbox Code Playgroud)