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

Assigning local std::vector to reference in C++

本文关键字:C++ 引用 vector std 分配      更新时间:2023-10-16

我不确定我的方法是否正确。 由于我通过引用向量传递vFunction,因此在执行后,向量的内容将发生变化。

如果我不能直接处理矢量v并决定使用临时矢量temp怎么办.通过v = temp分配v我的临时任务是否正确?不会在执行Function后将扫描的某个内存中引用v点?

void Function(std::vector<bool> &v) {
std::vector<bool> temp(v.size(), false);
// some operations on vector temp
// ...
v = temp;
}
不会引用

v点在执行Function后将被扫描的内存吗?

不。对于v = temp;v是从temp分配的副本。那么v会包含与temp相同的内容,但与temp无关;temp是一个本地对象,稍后将被销毁,但传入的参数不会受到影响。

顺便说一句:由于temp是一个本地对象,退出函数时将被销毁,因此从中复制可能效率低下。你可以从它移动:

v = std::move(temp);

是的,分配 v = temp 是安全的。有关更多信息,请查看例如:https://isocpp.org/wiki/faq/references#overview-refs