template <class _InputIter, class _Predicate>
inline _InputIter __find_if(_InputIter __first, _STLP_MPW_EXTRA_CONST
_InputIter __last,
_Predicate __pred,
const input_iterator_tag &)
{
while (__first != __last && !__pred(*__first))
++__first;
return __first;
}
Maybe this sample will help you:
#include <string>
#include <map>
#include <iostream>
using namespace std;
typedef map<int, string> testMap;
typedef map<int, string>::iterator testMapIter;
bool str2int (pair<const int,string> & iter){
return iter.second == "third";
}
int main()
{
testMap coll;
coll.insert(make_pair<int, string> (1, "first"));
coll.insert(make_pair<int, string> (2, "second"));
coll.insert(make_pair<int, string> (3, "third"));
coll.insert(make_pair<int, string> (4, "forth"));
coll.insert(make_pair<int, string> (5, "fifth"));
testMapIter iter = find_if(coll.begin(), coll.end(), str2int);
cout << iter->first << iter->second << endl;
}