<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中型Verson进行:https://stackoverflow.com/a/13428630/7267150
其他任何实现要求的方法(此情况,总和(?我更喜欢stl(是否可能(。
您无法通过stack
迭代,因此没有一种简单的方法。您可以使用dequeue<int>
或stack<int>
插入每个顶部元素。然后,如果您必须使用堆栈,请使用另一个循环将它们重新插入原始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
的主要原因是由于迭代向量的功能更容易。
相关文章:
- 在什么情况下,两个堆栈分配的结构对象的 this 点指向同一个地址?
- 我可以在没有堆栈的情况下在二叉搜索树中实现迭代器吗?
- 如何在不导致堆栈溢出的情况下计算非常大的数字和很小的 HCF.我正在使用欧几里得算法
- 如何在 C++03 中没有重复代码的情况下在堆栈上创建一个非常量 C 字符串数组?
- <int> 在不破坏堆栈的情况下获取 C++ 中的堆栈总和
- 为什么我的visual c++在堆栈损坏的情况下没有触发堆栈损坏错误
- 如何在不使用堆栈或数组的情况下从INT中提取每个数字?(C )
- 在哪种情况下,可以在堆栈上分配
- 例外情况下,我希望在没有任何堆栈展开的情况下进行调试
- 为什么 UMDH 找不到我的符号?我可以在没有它们的情况下解释堆栈跟踪吗?
- 处理POSIX信号:如何在不使用BackTrace_symbols的情况下获取堆栈跟踪
- 在不附加GDB的情况下获取所有线程的堆栈跟踪
- 在没有PDB文件的情况下,是否可以在Windows上获得堆栈跟踪?如果是,如何
- 在没有“new”关键字的情况下实例化类会导致在堆栈或堆上创建其内部变量
- 如何在不损坏堆栈的情况下将 varargs 与__stdcall一起使用
- 在没有动态内存分配的情况下实现堆栈
- 如何在不在堆栈上创建任何内容的情况下打印数组的内容
- 在不调用构造函数的情况下在堆栈上分配内存
- 在没有安装Visual Studio的情况下获得Windows崩溃的堆栈跟踪?(c++)
- 在不附加GDB的情况下打印所有线程的堆栈跟踪