通过引用传递时访问 std::vector 的元素

accessing elements of std::vector when passing by reference

提问人:code kid 提问时间:7/29/2018 更新时间:7/29/2018 访问量:1188

问:

当通过引用传递向量时,有没有更简单的方法来访问向量的元素?这将起作用,但似乎过于复杂。提前感谢您的帮助!!

#include <iostream>
#include <vector>
using namespace std;

void my_func(std::vector<int> * vect){
    // this will not work
    cout << *vect[2] << endl;
    // this will work
    cout << *(vect->begin()+2) << endl;
}

int main(){
    std::vector<int> vect = {1,3,4,56};
    my_func(&vect) ;
    return 0;
}
C++ 矢量 按引用传递

评论

5赞 7/29/2018
这是按指针传递,而不是按引用传递。你的C++教科书应该在前面的一章中解释其中的区别。
1赞 JVApen 7/29/2018
尝试使用并简单地使用void my_func(std::vector<int> & vect)cout << vect[2] << endl;
2赞 Killzone Kid 7/29/2018
// this will not work这是因为在访问索引之前,您必须先取消引用它。使用括号显式定义评估顺序cout << (*vect)[2] << endl;
1赞 Peter 7/29/2018
您是通过指针传递的,而不是通过引用传递的。他们是不同的。无论如何,这种方法是由于运算符优先规则造成的。 等效于 。(*vect)[2]*vect[2]*(vect[2])

答:

4赞 Expert Thinker El Rey 7/29/2018 #1

在示例中,您将传递指向向量的指针

要通过引用,您需要:

void my_func(std::vector<int>& vect) ...

然后就像访问一个元素一样简单。vect[index]

通常,当您通过引用传递容器时,您还需要指定,以免意外修改其中的内容。当然,除非你是故意的。const