1: //stack03.cpp
3: #include <iostream>
4: #include <iomanip>
5: #include <stack>
6: using namespace std;
8: int main()
9: {
10: cout << "\nThis program illustrates the assignment of one stack "
11: "to another,\nand the comparison of stacks.";
12: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
14: stack<int> s1;
15: s1.push(1);
16: s1.push(2);
17: s1.push(3);
18: s1.push(4);
19: cout << "\nThe stack s1 contains " << s1.size() << " values.";
20: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
22: cout << "\nNow we create three new empty stacks-s2, s3, s4-"
23: "and assign s1 to all three.\nThen we display the contents of "
24: "s1 to show what s2, s3 and s4 all contain.\nNote that the "
25: "process of displaying the values in s1 empties s1.";
26: stack<int> s2, s3, s4;
27: s4 = s3 = s2 = s1;
28: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
30: cout << "\nHere are the values of s1, in \"LIFO\" order:\n";
31: //This is the proper way to access the elements of a stack:
32: while(!s1.empty())
33: {
34: cout << "Popping: ";
35: cout << s1.top() << "\n";
36: s1.pop();
37: }
38: cout << "Press Enter to continue ... "; cin.ignore(80, '\n');
40: cout << "\nNext we display the contents of s2 to confirm that "
41: "s1 did get assigned to s2.";
42: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
44: cout << "\nHere are the values of s2, in \"LIFO\" order:\n";
45: while(!s2.empty())
46: {
47: cout << "Popping: ";
48: cout << s2.top() << "\n";
49: s2.pop();
50: }
51: cout << "Press Enter to continue ... "; cin.ignore(80, '\n');
53: cout << "\nFinallly, we push the value 5 onto s4, and then we "
54: "output the result of\ncomparing s3 and s4 using each of the "
55: "relational operators.";
56: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
58: s4.push(5);
59: cout << "\ns3 == s4 is " << boolalpha << (s3 == s4) << ".";
60: cout << "\ns3 != s4 is " << boolalpha << (s3 != s4) << ".";
61: cout << "\ns3 < s4 is " << boolalpha << (s3 < s4) << ".";
62: cout << "\ns3 <= s4 is " << boolalpha << (s3 <= s4) << ".";
63: cout << "\ns3 > s4 is " << boolalpha << (s3 > s4) << ".";
64: cout << "\ns3 >= s4 is " << boolalpha << (s3 >= s4) << ".";
65: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
66: }