// cont/mapfind.cpp #include #include #include using namespace std; /* Объект функции, проверяющий значение элемента отображения */ template class value_equals { private: V value; public: // Конструктор (инициализация значения, используемого при сравнении) value_equals (const V& v) : value(v) { } // Сравнение bool operator() (pair elem) { return elem.second == value; } }; int main() { typedef map 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; // Поиск элемента с ключом 3.0 pos = coll.find(3.0); // Логарифмическая сложность if (pos != coll.end()) { cout << pos->first << ": " << pos->second << endl; } // Поиск элемента со значением 3.0 pos = find_if(coll.begin(),coll.end(), // Линейная сложность value_equals(3.0)); if (pos != coll.end()) { cout << pos->first << ": " << pos->second << endl; } }