我用C++编写代码。如果我有一些函数void foo(vector<int> test)
,并在我的程序中调用它,向量是通过值传递还是引用传递?我不确定,因为我知道向量和数组是相似的,像void bar(int test[])
这样的函数可以通过引用测试(指针?)而不是通过值。我的猜测是,如果我想避免通过值传递,我需要显式地通过指针/引用传递向量,但我不确定。
发布于 2014-10-30 15:32:40
vector
在功能上与数组相同。但是,对于语言来说,vector
是一种类型,而int
也是一种类型。对于函数参数,任何类型(包括vector[]
)的数组都被视为指针。vector<int>
与int[]
不同(对于编译器而言)。vector<int>
是非数组、非引用和非指针的-它是通过值传递的,因此它将调用复制构造函数。
因此,您必须使用vector<int>&
(如果函数没有修改它,最好与const
一起使用)来将其作为引用传递。
发布于 2014-10-30 15:28:05
void foo(vector<int> test)
向量在此函数中通过值传递。
根据上下文,您有更多的方法来传递向量:
1)通过引用传递:-这将让函数foo更改向量的内容。比通过值传递更有效,因为避免了向量的复制。
2)传递const-reference:当你不想让函数改变向量的内容时,这是非常有效和可靠的。
发布于 2019-06-17 17:02:47
当我们在函数中按值传递向量作为参数时,它只是创建向量的副本,当我们调用特定函数时,不会对main函数中定义的向量产生任何影响。而当我们通过引用传递向量时,无论该特定函数中编写了什么,当我们调用该特定函数时,每个操作都将对main或其他函数中定义的向量执行。
https://stackoverflow.com/questions/26647152
复制相似问题