// // main.cpp // map_find // // Created by PKU on 14-9-8. // Copyright (c) 2014年 PKU. All rights reserved. // #include <iostream> #include <algorithm> #include <map> using namespace std; template <class K, class V> class value_equals{ private: V value; public: value_equals(const V & vt):value(vt) { } bool operator()(pair<const K, V> & elem) { return elem.second==value; } }; int main(int argc, const char * argv[]) { typedef map<float, float> FloatFloatMap; FloatFloatMap coll; FloatFloatMap::iterator pos; coll[1]=7; coll[2]=4; coll[3]=2; coll[4]=3; coll[5]=6; coll[6]=1; coll[7]=3; pos=coll.find(3); if (pos!=coll.end()) { cout << pos->first << ": " << pos->second << endl; } pos=find_if(coll.begin(), coll.end(), value_equals<float, float>(3.0)); while (pos!=coll.end()) { cout << pos->first << ": " << pos->second << endl; pos=find_if(++pos, coll.end(), value_equals<float, float>(3.0)); } return 0; }