我不确定我的方法是否正确。
由于我通过引用向v
传递向量Function
,因此在执行向量之后,内容将会发生变化。
如果我无法直接在向量v
上工作并决定使用临时向量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;
}
答案 0 :(得分:4)
不会在执行
v
之后的某些记忆中引用Function
点吗?
没有。对于v = temp;
,v
是从temp
分配的副本。然后v
将包含与temp
相同的内容,但它与temp
无关; temp
ia是一个稍后会被销毁的局部变量,但传入的参数不会受到影响。
顺便说一句:由于temp
是一个局部变量,当它离开函数时会被破坏,从中复制将是浪费。你可以离开它:
v = std::move(temp);
答案 1 :(得分:0)
是的,分配v = temp是安全的。有关详细信息,请查看例如:https://isocpp.org/wiki/faq/references#overview-refs