1: //map15.cpp
3: #include <iostream>
4: #include <map>
5: #include <utility>
6: using namespace std;
8: int main()
9: {
10: cout << "\nThis program illustrates the equal_range() member "
11: "function\nof the map interface.";
12: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
14: //Create an array of pairs
15: pair<char, int> a[] =
16: {
17: pair<char, int>('D', 68),
18: pair<char, int>('E', 69),
19: pair<char, int>('F', 70),
20: pair<char, int>('G', 71),
21: pair<char, int>('H', 72),
22: pair<char, int>('I', 73),
23: pair<char, int>('J', 74),
24: pair<char, int>('K', 75),
25: pair<char, int>('L', 76),
26: pair<char, int>('M', 77)
27: };
29: cout << "\nSuppose we begin with a map containing the "
30: "following pairs:\n";
31: map<char, int> m(a, a+10);
32: map<char, int>::iterator p = m.begin();
33: while (p != m.end())
34: {
35: cout << p->first << " " << p->second << endl;
36: ++p;
37: }
38: cout << "Press Enter to continue ... "; cin.ignore(80, '\n');
40: cout << "\nWe use the equal_range() function to find the lower "
41: "and upper bounds for a key\nin the map, then for a key that "
42: "precedes any key in the map, and finally for a\nkey that "
43: "follows all keys in the map.";
44: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
46: pair<map<char, int>::iterator, map<char, int>::iterator> bounds;
48: bounds = m.equal_range('H');
49: cout << "\nThe lower bound for the key H is the position of "
50: "the pair\n";
51: cout << bounds.first->first << " " << bounds.first->second;
52: cout << "\nand the upper bound for the key H is the position of "
53: "this pair:\n";
54: cout << bounds.second->first << " " << bounds.second->second;
55: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
57: bounds = m.equal_range('A');
58: cout << "\nThe lower bound for the key A is the position of "
59: "the pair\n";
60: cout << bounds.first->first << " " << bounds.first->second;
61: cout << "\nand the upper bound for the key A is the position of "
62: "this pair:\n";
63: cout << bounds.second->first << " " << bounds.second->second;
64: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
66: bounds = m.equal_range('T');
67: if (bounds.first == m.end())
68: cout << "\nThe lower bound for the key T is the "
69: "one-past-the-last position.";
70: if (bounds.second == m.end())
71: cout << "\nThe upper bound for the key T is the "
72: "one-past-the-last position.";
73: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
74: }