Pass stack to a function
#include <iostream> using std::cout; using std::endl; #include <stack> // stack adapter definition #include <vector> // vector class-template definition #include <list> // list class-template definition template< typename T > void pushElements( T &stackRef ); template< typename T > void popElements( T &stackRef ); int main() { std::stack< int > intDequeStack; cout << "Pushing onto intDequeStack: "; pushElements( intDequeStack ); cout << endl << endl; cout << "Popping from intDequeStack: "; popElements( intDequeStack ); cout << endl; return 0; } template< typename T > void pushElements( T &stackRef ) { for ( int i = 0; i < 10; i++ ) { stackRef.push( i ); cout << stackRef.top() << ' '; } } template< typename T > void popElements( T &stackRef ) { while ( !stackRef.empty() ) { cout << stackRef.top() << ' '; stackRef.pop(); } } /* Pushing onto intDequeStack: 0 1 2 3 4 5 6 7 8 9 Popping from intDequeStack: 9 8 7 6 5 4 3 2 1 0 */