#include #include #include #include using namespace std; // Why is this a template? template void print_stack(T q) { while(!q.empty()) { cout << q.top() << " "; q.pop(); } cout << endl; } int main() { // Constructors stack stk1; stk1.push(10); stk1.push(20); stk1.push(30); cout << "stk1 = "; print_stack(stk1); cout << endl; list l1{2,3,5,7}; stack> stk2(l1); cout << "stk2 = "; print_stack(stk2); cout << endl; stk2.emplace(17); stk2.emplace(18); cout << "stk2 = "; print_stack(stk2); cout << endl; vector v1{1.2,3.4,5.6,7.8}; stack> stk3(move(v1)); cout << stk3.size() << endl; cout << v1.size() << endl; cout << "stk3 = "; print_stack(stk3); cout << endl; stack stk4; // stk4.swap(stk3); ERROR - why? v1 = {1.3,2.2,3.3}; stack> stk5(v1); stk5.swap(stk3); cout << "stk3 = "; print_stack(stk3); cout << "stk5 = "; print_stack(stk5); stk5.push(3.2); cout << "stk5 = "; print_stack(stk5); cout << "stk3 > stk5: " << boolalpha << (stk3 > stk5) << endl << endl; stk3.push(stk3.top()); stk3.push(stk3.top()); cout << "stk3 = "; print_stack(stk3); cout << "stk5 = "; print_stack(stk5); cout << boolalpha << endl; cout << "stk3 > stk5: " << (stk3 > stk5) << endl; cout << "stk3 < stk5: " << (stk3 < stk5) << endl; cout << "stk3 == stk5: " << (stk3 == stk5) << endl; }