[英]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.