// (C) Porkolab 2003 // // A.6.17. // Special operations on map template <class Key, class T, class Cmp = less<Key>, class A = allocator< pair<const Key,T> > > class map { public: // ... // map operations: iterator find(const key_type& k); // find element with key k const_iterator find(const key_type& k) const; size_type count(const key_type& k) const; // find number of elements with key k iterator lower_bound(const key_type& k); // find first element with key k const_iterator lower_bound(const key_type& k) const; iterator upper_bound(const key_type& k); // find first element with key greater than k const_iterator upper_bound(const key_type& k) const; pair<iterator,iterator> equal_range(const key_type& k); pair<const_iterator,const_iterator> equal_range(const key_type& k) const; // ... }; /* * Usage * */ void f(map<string,int>& m) { map<string,int>::iterator p = m.find("Gold"); if (p!=m.end()) { // if "Gold" was found // ... } else if (m.find("Silver")!=m.end()) { // look for "Silver" // ... } // ... } void f(multimap<string,int>& m) { multimap<string,int>::iterator lb = m.lower_bound("Gold"); multimap<string,int>::iterator ub = m.upper_bound("Gold"); for (multimap<string,int>::iterator p = lb; p!=ub; ++p) { // ... } }