如何在c ++中通过引用传递向量元素?

时间:2013-06-26 17:49:27

标签: c++

我有一个向量,我需要将其元素传递给类型的函数:

bool doIt(MyClass &a);

所以我需要稍后再做:

vector<MyClass> v;
doIt(v[2]);

我不确定我做得对吗......

6 个答案:

答案 0 :(得分:5)

  

我不确定我做得对吗......

,你做对了,除了你的示例代码中的向量v不包含任何元素,所以索引2已经出来了-of-bounds,以及这个表达式:

v[2]

未定义行为的结果。这足以解决它(如果MyClass是默认可构造的):

vector<MyClass> v(3);
//                ^
//                Creates a vector of 3 default-constructed 
//                elements of type MyClass
doIt(v[2]);

答案 1 :(得分:2)

让我们查看文档!

http://www.cplusplus.com/reference/vector/vector/operator[]/

reference operator[] (size_type n);
const_reference operator[] (size_type n) const;
  

返回对向量容器中位置n处元素的引用。

看起来你很好。

答案 2 :(得分:1)

doIt(v[2]);

如果2是有效索引(这意味着它小于v.size()),则绝对正确。它通过引用传递参数。

答案 3 :(得分:1)

是的,这是正确的(假设当然存在v[2]),因为std::vector&#39; s operator []会返回引用。

答案 4 :(得分:0)

这是正确的操作符[]通过引用返回,而doIt函数通过引用获取,所以请记住你可以修改向量中的元素。

答案 5 :(得分:0)

您的代码没有任何问题(如果v.size()是&gt; = 3),但是当您调整矢量大小时,您的引用可能会变得无效。