c++ - How do I iterate `std::stack` elements in a for loop? -
this question has answer here:
- does std::stack expose iterators? 3 answers
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
Post a Comment