1: //list06.cpp
3: #include <iostream>
4: #include <iomanip>
5: #include <list>
6: using namespace std;
8: int main()
9: {
10: cout << "\nThis program illustrates typical uses of the default "
11: "list class iterator\n(which is a random access iterator), "
12: "and also shows the use of operators\n-> and == with list "
13: "class iterators.";
14: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
16: int a[] = {1, 2, 4, 8, 16, 32, 64};
17: list<int> lst(a, a+7);
19: list<int>::iterator p = lst.begin();
20: cout << "\nHere are the values in our list:\n";
21: while (p != lst.end()) cout << *p++ << " "; cout << endl;
22: cout << "Press Enter to continue ... "; cin.ignore(80, '\n');
24: list<int>::iterator p1 = lst.begin(); //point at first component
25: list<int>::iterator p2 = lst.end(); //point at one-past-the-last
26: cout << "\np1 is set to point at the first component and "
27: "p2 to one-past the last.\n";
28: cout << "Press Enter to continue ... "; cin.ignore(80, '\n');
30: if (p1 == p2)
31: cout << "\np1 == p2, so *p1 == *p2 == " << *p1;
32: else
33: cout << "\np1 and p2 point to different list elements.";
34: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
36: struct Point{int x; int y;};
37: Point location1 = {1, 2}, location2 = {4, 5};
38: list<Point> lst2;
39: lst2.push_back(location1);
40: lst2.push_back(location2);
41: list<Point>::iterator pp = lst2.begin();
42: cout << "\nLocations (accessed with the -> operator): ";
43: cout << "(" << pp->x << ", " << pp->y << ") ";
44: ++pp;
45: cout << "(" << pp->x << ", " << pp->y << ") ";
46: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
47: }