通过引用传递向量
Passing vectors by reference
如果我在一个类中有一个对象向量,我想在另一个类中改变它,我会尝试通过引用传递所有信息。
我到底需要通过引用传递什么?向量?的对象?都有?
本质上我想问的是:它们之间有什么区别?
vector&<object> blah; // A reference to a vector of objects?
vector<object&> blah; // A vector of references to objects?
vector&<object&> blah; // A reference to a vector of references to objects???
我实际上不确定如何引用数组像容器的工作。这些合法吗?
vector&<object>
是语法错误。vector<object&>
无效,因为向量的值类型必须是可赋值的。vector&<object&> blah
是语法错误
对vector的引用是vector<T>&
不能有引用向量。Vector元素必须是可复制和可赋值的,而引用则不然。因此,只有第一个选项实际上是一个选项,但它拼写为std::vector<Object> &
。
v[1]
已经向第二个元素返回了一个引用,因此您可以愉快地通过引用传递各个元素。有可能像std::ref
那样有一个引用包装器向量,但如果你不知道那是什么,你可能不应该在此时使用它
另一个选择是传递迭代器而不是容器。这是标准库在<algorithm>
中采用的方法。它们在调用时稍微冗长一些,但它们的优点是既适用于集合的一部分,也适用于完整的集合,并将算法与容器解耦。
最后,当然,这是值得检查你知道你的算法,因为可能已经有一个做你想要的。
相关文章:
- 向量元素的引用地址与它所指向的向量元素的地址不同.为什么
- 创建引用向量的优雅方式
- C++重新引用向量中的值
- 很好的语法来获取对向量/数组数据的大小引用?
- 如何返回向量的常量引用?
- 取消引用向量时出现问题
- 为什么通过 vector<reference_wrapper> 的元素删除引用的值<T>不会使向量无效?
- 通过引用传递向量是请求 std::分配器
- 从类返回引用向量
- 返回两个向量 – 使用引用还是元组?
- 在C++中通过引用传递向量数组
- 引用向量中的特定索引
- 如何告诉自动推断向量<bool>元素的非引用类型
- 如何在方法主体中返回声明向量的引用?
- 向量引用C++
- 在向量引用上调用 vector::reserve()
- 如何创建一个同时接受数组和向量引用的函数模板
- 如何做列表的向量引用列表中的值
- c++向量引用转换
- 最方便的表示向量引用的向量的方法