C++ 通过引用传递向量

C++ 通过引用传递向量,c++,vector,C++,Vector,如果我在一个类中有一个要在另一个类中更改的对象向量,我会尝试通过引用传递所有信息 但是,我到底需要通过引用传递什么?向量?那些东西?两者都有 本质上我想问的是:这两者之间有什么区别 vector&<object> blah; // A reference to a vector of objects? vector<object&> blah; // A vector of references to objects? vector&<o

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

但是,我到底需要通过引用传递什么?向量?那些东西?两者都有

本质上我想问的是:这两者之间有什么区别

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&blah;//对对象向量的引用?
向量等等;//对对象的引用向量?
向量&blah;//对对象引用向量的引用???
实际上,我不确定数组类容器的引用是如何工作的。这些是合法的吗?

vector&
是一个语法错误<代码>向量无效,因为向量的值类型必须是可赋值的<代码>向量&blah是一个语法错误


对向量的引用是
向量&

不能有引用向量。向量元素必须是可复制和可分配的,而引用则不是。所以只有第一个选项实际上是一个选项,但它的拼写是
std::vector&

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


有一个引用向量可以包装一个la
std::ref
,但是如果您不知道那是什么,那么此时您可能不应该使用它。

另一个选项是传递迭代器而不是容器。这是标准库采用的方法。它们在调用站点上稍显冗长,但它们的优点是,它们既适用于部分集合,也适用于完整集合,并将算法与容器解耦


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

您需要具体更改什么?如果需要更改一个对象,可以通过引用传递它。如果您需要更改容器(例如,添加或删除对象),请传递容器。并且引用正确写入为
vector&blah我推荐@R.MartinhoFernandes谢谢,我买了一些。我想我得到的那个实际上是垃圾。好吧,你只要存储一个对向量的引用。。。当通过索引访问所述向量的元素时,实际上是在访问原始对象?