通过引用传递向量 C++

Posted

技术标签:

【中文标题】通过引用传递向量 C++【英文标题】:Pass a vector by reference C++ 【发布时间】:2017-01-01 05:59:45 【问题描述】:

我不明白为什么这不起作用? 我需要传递向量引用,以便可以从外部函数对其进行操作。

网上有几个关于这个的问题,但我看不懂回复?

代码如下:。

#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");



【问题讨论】:

vector&lt;string&gt; *vec是指针传递,如果要引用传递,改成vector&lt;string&gt; &amp;vec 我没有看到你传递任何向量。通过参考或价值。 好问题.. 在整个网络上解决得不好。下面的答案很好,但在将向量作为函数参数传递时它没有解决指针问题。 【参考方案1】:

首先您需要了解引用和指针之间的区别,然后了解pass-by-referencepass-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

【讨论】:

以上是关于通过引用传递向量 C++的主要内容,如果未能解决你的问题,请参考以下文章

C++ 通过引用传递向量字符指针

C++ 向量通过引用语法传递

通过引用传递向量,但更改不会坚持 c++

如何访问在 C++ 中通过引用传递的列表/向量的元素

通过引用传递 - 左值和向量

通过引用函数传递向量,但更改不会持续