繁体   English   中英

得到堆栈的总和 <int> 在C ++中而不破坏堆栈

[英]get the sum of stack<int> in c++ without destroying stack

有效的方法来获取堆栈元素的总和,而无需清空它或将其复制到其他堆栈? 我正在做的是:

    stack<int> si;
    int sum = 0;
    stack<int> tsi(si);
    while (!tsi.empty()) {
        sum += tsi.top();
        tsi.pop();
    }

可以使用https://ideone.com/i7ha2j中间版本的https://stackoverflow.com/a/13428630/7267150来完成此操作

还有其他方法可以满足要求吗? 我更喜欢STL(有可能)。

您无法遍历stack因此没有一种简单的方法。 您可以使用dequeue<int>stack<int>插入每个顶部元素。 然后,如果必须使用stack,请使用另一个循环将它们重新插入到原始stack<int> si 否则,请尝试切换到vector<int>以便于迭代。

堆栈不是在这里选择的正确容器。 您应该看一下std :: vector ,然后您可以执行以下操作:

#include <vector>

std::vector< int > vec;
int sum = 0;
for( auto const & it : vec )
{
  sum += it;
}

std::stack选择std::vector主要原因是由于更容易迭代向量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM