提问人:code kid 提问时间:7/29/2018 更新时间:7/29/2018 访问量:1188
通过引用传递时访问 std::vector 的元素
accessing elements of std::vector when passing by reference
问:
当通过引用传递向量时,有没有更简单的方法来访问向量的元素?这将起作用,但似乎过于复杂。提前感谢您的帮助!!
#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;
}
答:
4赞
Expert Thinker El Rey
7/29/2018
#1
在示例中,您将传递指向向量的指针。
要通过引用,您需要:
void my_func(std::vector<int>& vect) ...
然后就像访问一个元素一样简单。vect[index]
通常,当您通过引用传递容器时,您还需要指定,以免意外修改其中的内容。当然,除非你是故意的。const
评论
void my_func(std::vector<int> & vect)
cout << vect[2] << endl;
// this will not work
这是因为在访问索引之前,您必须先取消引用它。使用括号显式定义评估顺序cout << (*vect)[2] << endl;
(*vect)[2]
*vect[2]
*(vect[2])