<int> 在不破坏堆栈的情况下获取 C++ 中的堆栈总和

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

本文关键字:堆栈 情况下 获取 C++ int lt gt      更新时间:2023-10-16

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

    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的主要原因是由于迭代向量的功能更容易。

相关文章: