C++ 将向量作为参数传递给函数

C++ 将向量作为参数传递给函数,c++,function,stl,C++,Function,Stl,我有这样一个函数: void Foo(std::vector<bool> Visited, int actual element); void Foo(标准::访问向量,int实际元素); 我实际上在一个图中用这个函数来表示BFS,但它是在一个无限循环中进行的。我怀疑它总是创建访问向量的副本。 我如何使它改变向量,它是在main中的某个地方声明和初始化的?我的“复制”理论是对的吗 如何使用指向对象的指针,因为我认为是一个对象?通过引用传递它: void Foo(std::vect

我有这样一个函数:

void Foo(std::vector<bool> Visited, int actual element);
void Foo(标准::访问向量,int实际元素);
我实际上在一个图中用这个函数来表示BFS,但它是在一个无限循环中进行的。我怀疑它总是创建访问向量的副本。 我如何使它改变向量,它是在main中的某个地方声明和初始化的?我的“复制”理论是对的吗

如何使用指向对象的指针,因为我认为
是一个对象?

通过引用传递它:

void Foo(std::vector<bool>& Visited, int actual element); 
                          ^
void Foo(标准::向量和访问,int实际元素);
^
现在,您可以修改传递到
Foo
的原始向量

我的“复制”理论是对的吗

对。声明没有
&
*
的参数将对象作为副本通过值传递。这同样适用于返回类型等(移动构造函数除外)

通过参考传递它:

void Foo(std::vector<bool>& Visited, int actual element); 
                          ^
void Foo(标准::向量和访问,int实际元素);
^
现在,您可以修改传递到
Foo
的原始向量

我的“复制”理论是对的吗


对。声明没有
&
*
的参数将对象作为副本通过值传递。这同样适用于返回类型等(移动构造函数除外)

使用引用的类型

void Foo(std::vector<bool> &Visited, int actual element);

使用引用的类型

void Foo(std::vector<bool> &Visited, int actual element);

是的,如果它传递一个副本,您可以将签名更改为
void Foo(std::vector&visted,int-actual元素)以能够修改函数中的向量。至于你的无限循环,我们无法帮助你不看代码。是的,它传递了一个副本,你可以将签名更改为
void Foo(std::vector&visted,int-actual-element)以能够修改函数中的向量。至于您的无限循环,我们无法在不查看代码的情况下帮助您。