如何处理函数c ++中的stl堆栈?

时间:2015-10-30 20:27:52

标签: c++ stl stack

我是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;
  }

1 个答案:

答案 0 :(得分:0)

您的fill函数按值a取值,表示复制。函数内部a的更改不会影响传递给函数的变量。

我建议你让函数通过引用传递对象:

void fill(stack<int>& a, int cap)

现在更改为a将更新您传递的对象。您可能将全局变量传递给函数这一事实并不重要。