1: //multiset05.cpp 3: #include <iostream> 4: #include <set> 5: using namespace std; 7: int main() 8: { 9: cout << "\nThis program displays first a set, then a multiset, of " 10: "positive integer values.\nIn each case, the user is permitted " 11: "to enter values of the user's choice and\nthe program provides " 12: "the lower and upper bound of each value entered, relative\nto " 13: "the set of values, or the multiset of values, as the case may be."; 14: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 16: int a_s[] ={2, 4, 6, 8, 10}; 17: set<int> s(a_s, a_s+5); 18: cout << "\nHere are the values in the set:\n"; 19: ostream_iterator<int> os(cout, " "); 20: copy(s.begin(), s.end(), os); cout << endl; 21: int value; 22: cout << "\nEnter a value to see its lower and upper bound " 23: "\nin the above set (or end-of-file to quit): "; 24: while (cin >> value) 25: { 26: cin.ignore(80, '\n'); 27: set<int>::iterator lower = s.lower_bound(value); 28: set<int>::iterator upper = s.upper_bound(value); 29: cout << "\nLower bound of " << value << " = "; 30: if (lower == s.end()) cout << "the end of the range"; 31: else cout << *lower; 32: cout << "\nUpper bound of " << value << " = "; 33: if (upper == s.end()) cout << "the end of the range"; 34: else cout << *upper; 35: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 36: cout << "\nEnter a value to see its lower and upper bound " 37: "\nin the above sequence (or end-of-file to quit): "; 38: } 40: cin.clear(); 41: cout << "\nNow we do the same for a multiset of values."; 42: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 44: int a_ms[] = {2, 2, 2, 4, 4, 4, 6, 6, 6, 8, 8, 8, 10, 10, 10}; 45: multiset<int> ms(a_ms, a_ms+15); 46: cout << "\nHere are the values in the multiset:\n"; 47: copy(ms.begin(), ms.end(), os); cout << endl; 48: cout << "\nEnter a value to see its lower and upper bound " 49: "\nin the above multiset (or end-of-file to quit): "; 50: while (cin >> value) 51: { 52: cin.ignore(80, '\n'); 53: multiset<int>::iterator lower_ms = ms.lower_bound(value); 54: multiset<int>::iterator upper_ms = ms.upper_bound(value); 55: cout << "\nLower bound of " << value << " = "; 56: if (lower_ms == ms.end()) cout << "the end of the range"; 57: else cout << *lower_ms; 58: cout << "\nUpper bound of " << value << " = "; 59: if (upper_ms == ms.end()) cout << "the end of the range"; 60: else cout << *upper_ms; 61: cout << "\nPress Enter to continue .. "; cin.ignore(80, '\n'); 62: cout << "\nEnter a value to see its lower and upper bound " 63: "\nin the above sequence (or end-of-file to quit): "; 64: } 65: }