我是c ++中的新用户。我想知道我们如何处理函数内的stl堆栈,这样我传递给函数的全局声明的堆栈就会被修改,因为我们修改了函数内部的本地堆栈。有没有办法实现这个?
示例 - 我想在堆栈内部进行修改'a'内部填充,s1会受到这种影响吗?..如果不能做什么?
#include<iostream>
#include<stack>
using namespace std;
stack<int> s1;
stack<int> s2;
void fill(stack<int> a,int cap){
.........
}
int main()
{
int n;
fill(s1,n);
return 0;
}
答案 0 :(得分:0)
您的fill
函数按值a
取值,表示复制。函数内部a
的更改不会影响传递给函数的变量。
我建议你让函数通过引用传递对象:
void fill(stack<int>& a, int cap)
现在更改为a
将更新您传递的对象。您可能将全局变量传递给函数这一事实并不重要。