1: //distance.cpp
3: #include <iostream>
4: #include <list>
5: #include <iterator>
6: #include <algorithm>
7: using namespace std;
9: int main()
10: {
11: cout << "\nThis program illustrates the use of the distance() "
12: "function\nto compute the number of positions between two "
13: "iterators.";
14: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
16: int a[] = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20};
17: list<int> intList(a, a+10);
18: cout << "\nHere are the values in a list of integers:\n";
19: copy(intList.begin(), intList.end(), ostream_iterator<int>(cout, " "));
20: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
22: list<int>::iterator p1 = intList.begin();
23: list<int>::iterator p2 = intList.end();
24: ++p1; ++p1; ++p1; //p1 now points at 4th value
25: --p2; --p2; //p2 now points at 2nd-last value (8th value)
26: cout << "\np1 is pointing at the value " << *p1 << " (the 4th value).";
27: cout << "\np2 is pointing at the value " << *p2 << " (the 9th value).";
28: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
30: cout << "\nThe number of values (or positions) \"between\" "
31: "these two values\n(inclusive) is "
32: << (int)distance(p1, p2) + 1 << " (= 9-4+1).";
33: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
34: }