首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C++中,向量是通过值传递还是通过引用传递给函数

在C++中,向量是通过值传递还是通过引用传递给函数
EN

Stack Overflow用户
提问于 2014-10-30 15:18:48
回答 3查看 158.5K关注 0票数 113

我用C++编写代码。如果我有一些函数void foo(vector<int> test),并在我的程序中调用它,向量是通过值传递还是引用传递?我不确定,因为我知道向量和数组是相似的,像void bar(int test[])这样的函数可以通过引用测试(指针?)而不是通过值。我的猜测是,如果我想避免通过值传递,我需要显式地通过指针/引用传递向量,但我不确定。

EN

回答 3

Stack Overflow用户

发布于 2014-10-30 15:32:40

vector在功能上与数组相同。但是,对于语言来说,vector是一种类型,而int也是一种类型。对于函数参数,任何类型(包括vector[])的数组都被视为指针。vector<int>int[]不同(对于编译器而言)。vector<int>是非数组、非引用和非指针的-它是通过值传递的,因此它将调用复制构造函数。

因此,您必须使用vector<int>& (如果函数没有修改它,最好与const一起使用)来将其作为引用传递。

票数 28
EN

Stack Overflow用户

发布于 2014-10-30 15:28:05

void foo(vector<int> test)

向量在此函数中通过值传递。

根据上下文,您有更多的方法来传递向量:

1)通过引用传递:-这将让函数foo更改向量的内容。比通过值传递更有效,因为避免了向量的复制。

2)传递const-reference:当你不想让函数改变向量的内容时,这是非常有效和可靠的。

票数 11
EN

Stack Overflow用户

发布于 2019-06-17 17:02:47

当我们在函数中按值传递向量作为参数时,它只是创建向量的副本,当我们调用特定函数时,不会对main函数中定义的向量产生任何影响。而当我们通过引用传递向量时,无论该特定函数中编写了什么,当我们调用该特定函数时,每个操作都将对main或其他函数中定义的向量执行。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26647152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档