1: //map11.cpp
3: #include <iostream>
4: #include <map>
5: #include <utility>
6: using namespace std;
8: int main()
9: {
10: cout << "\nThis program illustrates the insert() member function "
11: "for maps.";
12: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
14: cout << "\nFirst we put the first five pairs of capital letters "
15: "and their ASCII codes\ninto a map. In this case the capital "
16: "letters are the keys and the ASCII\ncodes are the values in "
17: "the key/value pairs of the map.";
18: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
20: //Create an array of pairs
21: pair<char, int> a1[] =
22: {
23: pair<char, int>('A', 65),
24: pair<char, int>('B', 66),
25: pair<char, int>('C', 67),
26: pair<char, int>('D', 68),
27: pair<char, int>('E', 69)
28: };
29: //Initialize a map with values from the array
30: map<char, int> m1(a1, a1+5);
32: cout << "\nHere are the pairs in the map:\n";
33: map<char, int>::iterator p = m1.begin();
34: while (p != m1.end())
35: {
36: cout << p->first << " " << p->second << endl;
37: ++p;
38: }
39: cout << "Press Enter to continue ... "; cin.ignore(80, '\n');
41: cout << "\nNow we try to insert Z and its ASCII code 90 into the map.";
42: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
43: pair<map<char, int>::iterator, bool> insertResult;
44: insertResult = m1.insert(pair<char, int>('Z', 90));
45: if (insertResult.second == true)
46: {
47: cout << "\nSuccess! The following pair is now in the map:\n";
48: cout << insertResult.first->first << " "
49: << insertResult.first->second;
50: }
51: else
52: {
53: cout << "\nRats! That insertion did not succeed.";
54: cout << "\nWhy not? Because the following pair was already "
55: "in the map:\n";
56: cout << insertResult.first->first << " "
57: << insertResult.first->second;
58: }
59: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
61: cout << "\nNext we try to insert D and its ASCII code 68 into the map.";
62: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
63: insertResult = m1.insert(pair<char, int>('D', 68));
64: if (insertResult.second == true)
65: {
66: cout << "\nSuccess! The following pair is now in the map:\n";
67: cout << insertResult.first->first << " "
68: << insertResult.first->second;
69: }
70: else
71: {
72: cout << "\nRats! That insertion did not succeed.";
73: cout << "\nWhy not? Because the following pair was already "
74: "in the map:\n";
75: cout << insertResult.first->first << " "
76: << insertResult.first->second;
77: }
78: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
80: cout << "\nNow we try to insert pairs containing the capital letters "
81: "T, H and\nD (again), along with their ASCII codes, in that order.";
82: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
83: map<char, int>::iterator p1, p2, p3;
84: p1 = m1.insert(m1.begin(), make_pair('T', 84));
85: p2 = m1.insert(m1.end(), make_pair('H', 72));
86: p3 = m1.insert(m1.begin(), make_pair('D', 68));
87: cout << "\nHere are the pairs in the map after those three "
88: "attempted insertions:\n";
89: p = m1.begin();
90: while (p != m1.end())
91: {
92: cout << p->first << " " << p->second << endl;
93: ++p;
94: }
95: cout << "Press Enter to continue ... "; cin.ignore(80, '\n');
97: cout << "\nAnd the pairs pointed to by the returned iterators "
98: "\nof these three calls to insert() are:\n";
99: cout << p1->first << " " << p1-> second << endl;
100: cout << p2->first << " " << p2-> second << endl;
101: cout << p3->first << " " << p3-> second << endl;
102: cout << "Press Enter to continue ... "; cin.ignore(80, '\n');
104: cout << "\nFinally we create another map containing pairs with "
105: "the capital letters from\nC to J and their corresponding ASCII "
106: "codes. Then we try insert all of these\ninto the previous map "
107: "using the insert() function. Some of them will go in,\nand some "
108: "won't, because they are already there.";
109: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
111: //Create an array of pairs
112: pair<char, int> a2[] =
113: {
114: pair<char, int>('C', 67),
115: pair<char, int>('D', 68),
116: pair<char, int>('E', 69),
117: pair<char, int>('F', 70),
118: pair<char, int>('G', 71),
119: pair<char, int>('H', 72),
120: pair<char, int>('I', 73),
121: pair<char, int>('J', 74),
122: };
123: map<char, int> m2(a2, a2+8);
124: m1.insert(m2.begin(), m2.end());
126: cout << "\nHere are the pairs in the map after these "
127: "attempted insertions:\n";
128: p = m1.begin();
129: while (p != m1.end())
130: {
131: cout << p->first << " " << p->second << endl;
132: ++p;
133: }
134: cout << "Press Enter to continue ... "; cin.ignore(80, '\n');
135: }