1: //vector06.cpp
3: #include <iostream>
4: #include <iomanip>
5: #include <vector>
6: using namespace std;
8: int main()
9: {
10: cout << "\nThis program illustrates typical uses of the default "
11: "vector class iterator\n(which is a random access iterator), "
12: "and also shows the use of operators\n->, [], <, >, <=, >=, "
13: "+=, -= and == with vector class iterators. Note the\nstrong "
14: "analogies between vector class iterators and pointers.";
15: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
17: int a[] = {1, 2, 4, 8, 16, 32, 64};
18: vector<int> v(a, a+7); //vector contains array values
20: vector<int>::iterator p = v.begin();
21: cout << "\nHere are the values in our vector:\n";
22: while (p != v.end()) cout << *p++ << " "; cout << endl;
23: cout << "Press Enter to continue ... "; cin.ignore(80, '\n');
25: vector<int>::iterator p1 = v.begin(); //point at first component
26: vector<int>::iterator p2 = v.end(); //point at one-past-the-last
27: cout << "\np1 is set to point at the first component and "
28: "p2 to one-past the last.\n";
29: cout << "Press Enter to continue ... "; cin.ignore(80, '\n');
31: if (p1[2] == p2[-5])
32: cout << "\np1[2] == p2[-5] == " << p1[2];
33: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
35: cout << "\nNow we perform p1 += 2; and p2 -= 5;.\n";
36: cout << "Press Enter to continue ... "; cin.ignore(80, '\n');
37: p1 += 2;
38: p2 -= 5;
39: if (p1 == p2)
40: cout << "\np1 == p2, so *p1 == *p2 == " << *p1;
41: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
43: p1--; p2++;
44: cout << "\nNow we've performed p1--; and p2++;, so ... ";
45: cout << "\np1 < p2 is " << boolalpha << (p1 < p2);
46: cout << "\np1 <= p2 is " << boolalpha << (p1 <= p2);
47: cout << "\np1 > p2 is " << boolalpha << (p1 > p2);
48: cout << "\np1 >= p2 is " << boolalpha << (p1 >= p2);
49: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
51: struct Point{int x; int y;};
52: Point location1 = {1, 2}, location2 = {4, 5};
53: vector<Point> v2;
54: v2.push_back(location1);
55: v2.push_back(location2);
56: vector<Point>::iterator pp = v2.begin();
57: cout << "\nLocations (accessed with the -> operator): ";
58: cout << "(" << pp->x << ", " << pp->y << ") ";
59: ++pp;
60: cout << "(" << pp->x << ", " << pp->y << ") ";
61: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
62: }