通过引用传递向量

Passing vectors by reference

本文关键字:向量 引用      更新时间:2023-10-16

如果我在一个类中有一个对象向量,我想在另一个类中改变它,我会尝试通过引用传递所有信息。

我到底需要通过引用传递什么?向量?的对象?都有?

本质上我想问的是:它们之间有什么区别?

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>中采用的方法。它们在调用时稍微冗长一些,但它们的优点是既适用于集合的一部分,也适用于完整的集合,并将算法与容器解耦。

最后,当然,这是值得检查你知道你的算法,因为可能已经有一个做你想要的。