我无法弄清楚为什么这不起作用? 我需要传递向量引用,以便我可以从外部函数中操作它。
互联网上有几个问题,但我无法理解回复?
代码如下:。
#include <iostream>
#include <vector>
#include <string>
using namespace std;
string funct(vector<string> *vec)
{
cout << vec[1] << endl;
}
int main()
{
vector<string> v;
v.push_back("one");
v.push_back("two");
v.push_back("three");
}
答案 0 :(得分:4)
首先,您需要了解引用和指针之间的差异,然后了解pass-by-reference
和pass-by-pointer
之间的差异。
形式的函数原型:
void example(int *); //This is pass-by-pointer
期望函数调用类型:
int a; //The variable a
example(&a); //Passing the address of the variable
然而,形式的原型:
void example(int &); //This is pass-by-reference
期望函数调用类型:
int a; //The variable a
example(a);
使用相同的逻辑,如果您希望通过引用传递向量,请使用以下命令:
void funct(vector<string> &vec) //Function declaration and definition
{
//do something
}
int main()
{
vector<string> v;
funct(v); //Function call
}
编辑:指向指针和参考的基本解释的链接:
https://www.dgp.toronto.edu/~patrick/csc418/wi2004/notes/PointersVsRef.pdf