【发布时间】:2018-02-07 14:02:00
【问题描述】:
获取堆栈元素总和而不清空它或将其复制到其他堆栈的有效方法? 我正在做的是:
stack<int> si;
int sum = 0;
stack<int> tsi(si);
while (!tsi.empty()) {
sum += tsi.top();
tsi.pop();
}
这可以使用https://ideone.com/i7ha2j midified 版本来完成:https://stackoverflow.com/a/13428630/7267150
任何其他方式来实现要求(这种情况下,总和)??我更喜欢 STL(有可能)。
【问题讨论】:
-
你为什么用
std::stack开头?只需使用std::vector。 -
std::stack只是一个 LIFO 数据结构。它不是为迭代元素而设计的。 -
堆栈的要点是您只能访问一端。如果您需要其他东西,例如能够查看所有值,那么堆栈不是正确的数据结构。
-
堆栈不可能。如果你想随机访问,请使用向量。