1 // This file is part of the ustl library, an STL implementation.
3 // Copyright (C) 2005 by Mike Sharov <msharov@users.sourceforge.net>
4 // This file is free software, distributed under the MIT License.
9 typedef multimap
<int,string
> empmap_t
;
10 typedef empmap_t::const_iterator citer_t
;
12 void PrintEntries (citer_t first
, citer_t last
)
14 for (citer_t i
= first
; i
< last
; ++ i
)
15 cout
<< i
->second
<< "\t- $" << i
->first
<< endl
;
18 inline void PrintEntries (const empmap_t
& m
) { PrintEntries (m
.begin(), m
.end()); }
20 void TestMultiMap (void)
23 employees
.insert (make_pair (27000, string("Dave")));
24 employees
.insert (make_pair (27000, string("Jim")));
25 employees
.insert (make_pair (99000, string("BigBoss")));
26 employees
.insert (make_pair (47000, string("Gail")));
27 employees
.insert (make_pair (15000, string("Dumb")));
28 employees
.insert (make_pair (47000, string("Barbara")));
29 employees
.insert (make_pair (47000, string("Mary")));
31 cout
<< "As-inserted listing:" << endl
;
32 PrintEntries (employees
);
34 cout
<< "Alphabetical listing:" << endl
;
36 PrintEntries (employees
);
38 empmap_t::range_t middles
= employees
.equal_range (47000);
39 cout
<< "Employees making $" << middles
.first
->first
<< ":";
40 empmap_t::const_iterator i
;
41 for (i
= middles
.first
; i
< middles
.second
; ++ i
)
42 cout
<< " " << i
->second
;
45 cout
<< "There are " << employees
.count (27000) << " low-paid employees" << endl
;
47 cout
<< "Firing all low-paid employees:" << endl
;
48 employees
.erase (27000);
49 PrintEntries (employees
);
51 cout
<< "Firing dumb employees:" << endl
;
52 employees
.erase (employees
.begin(), employees
.begin() + 1);
53 PrintEntries (employees
);
56 StdBvtMain (TestMultiMap
)