通过引用传递向量

时间:2011-11-01 12:13:34

标签: c++ vector

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

我究竟需要通过引用传递什么?向量?对象?既?

基本上我要问的是:这些之间有什么区别?

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???

我真的不确定像容器这样的数组的引用是如何工作的。这些合法吗?

3 个答案:

答案 0 :(得分:47)

vector&<object>是语法错误。 vector<object&>无效,因为向量的值类型必须是可分配的。 vector&<object&> blah是语法错误。

对向量的引用是vector<T>&

答案 1 :(得分:4)

你不能有引用的向量。向量元素必须是可复制和可分配的,而引用则不是。因此,只有第一个选项实际上是一个选项,但拼写为std::vector<Object> &

请注意v[1]已经将引用返回给第二个元素,因此您可以通过引用愉快地传递单个元素。

可以有一个引用包装器的向量la std::ref,但如果你不知道那是什么,你可能不应该在这一点上使用它。

答案 2 :(得分:2)

另一种选择是传递迭代器而不是容器。这是标准库在<algorithm>中采用的方法。它们在调用站点上稍微冗长一点,但它们的优点是它们可以用于集合的各个部分以及完整的集合,并将算法与容器分离。

最后,当然,在检查您了解您的算法时是值得的,因为可能已经有一个可以满足您的需求。