c++ - How do I iterate `std::stack` elements in a for loop? -


this question has answer here:

i'm writing fir filter supposed calculate running average of input sequence.

class runningaverager {     public:         runningaverager(uint64_t filterorder)         {             (uint64_t i=0; i<filterorder; i++)             {                 registers.push(0);             }         }         uint64_t getaverage(uint64_t newinput)         {             registers.push(newinput);             registers.pop();             return getaverage();         }         uint64_t getaverage() const         {             uint64_t sum = 0;             //for (uint64_t i=0; i<registers.size(); i++)       <-- works             (std::stack<uint64_t>::const_reference ref=registers.begin(); ref!=registers.end(); ???)             {   // begin() , end() methods not exist std::stack                 //sum += registers[i];      doesn't work, because [] operator not overloaded.                 sum += ref;             }             return sum / registers.size();         }     private:         std::stack<uint64_t> registers; }; 

i having trouble iterating std::stack object registers. unlike other stl containers, doesn't give iterator or random access operator.

how loop , std::stack object?

an example usage:

runningaverager ra(10);  while(...) {     filteredspeed = ra.getaverage(actualspeed); } 

you use std::deque in place of stack, using push_front , pop_front.


Comments

Popular posts from this blog

matlab - Deleting rows with specific rules -

jquery - How would i go about shortening this code? And to cancel the previous click on click of new section? -