【问题标题】:how to work on stl stacks inside functions c++? [closed]如何在函数c ++中处理stl堆栈? [关闭]
【发布时间】:2016-01-31 09:01:34
【问题描述】:

我是 C++ 中 stl 的新手。我想知道我们如何在函数内部的 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;
  }

【问题讨论】:

  • 您是在谈论std::stack,还是如何处理内存,或者两者都不是?我不知道你在问什么
  • 没有“全局声明的堆栈”之类的东西。如果这是您创建或提供给您的东西,您需要清楚地解释这一点。
  • 如果我自己创建堆栈,我可以理解这个过程,但 stl 会造成混乱
  • 使用全局变量还是局部变量与标准库具体无关。
  • @UdayanBaidya 仍然不知道“混乱”是什么。考虑提供一个“引起混淆”的小示例代码,并解释您感到困惑的原因。否则,我怀疑你会得到任何答案。

标签: c++ stl stack


【解决方案1】:

您的fill 函数按值获取参数a,这意味着复制了一份。函数内部对a 的任何更改都不会影响您传递给函数的变量。

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

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

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

【讨论】:

  • 非常感谢你:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-06
  • 2021-12-20
  • 2010-09-08
  • 1970-01-01
  • 2015-11-11
相关资源
最近更新 更多