将本地 std::vector 分配给C++中的引用
Assigning local std::vector to reference in C++
我不确定我的方法是否正确。 由于我通过引用向量传递v
Function
,因此在执行后,向量的内容将发生变化。
如果我不能直接处理矢量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
相关文章:
- 将对象数组的引用传递给函数
- 什么时候在C++中返回常量引用是个好主意
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- 何时在引用或唯一指针上使用移动语义
- 如何在c++中使用引用实现类似python的行为
- 编译C++时未定义的引用
- Ctypes wstring通过引用传递
- c++r值引用应用于函数指针
- 理解c++中的引用
- C++取消引用指针.为什么会发生变化
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- 强制转换为引用类型
- 引用一个已擦除类型(void*)的指针
- 向量元素的引用地址与它所指向的向量元素的地址不同.为什么
- 具有默认值的引用获取函数
- 如何使用基类指针引用派生类成员
- 使用取消引用的指针的多态性会产生意外的结果.为什么?
- 如何引用基类的派生类?