在C ++中将本地std :: vector分配给引用

时间:2016-11-23 08:56:57

标签: c++ vector pass-by-reference

我不确定我的方法是否正确。 由于我通过引用向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;
}

2 个答案:

答案 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