
How would I accomplish the following using ptr_map instead of std::map? typedef std::map< std::string, int* > stlmap; bool predicate( stlmap::value_type& mapitem ) { // return true if key value has at least 4 characters return( mapitem.first.size() > 3 ); } void sample( stlmap& themap ) { std::find_if( themap.begin(), themap.end(), predicate ); } The predicate for std::find_if requires *iterator for the parameter. However, with ptr_map *iterator returns a reference to the element value instead of the key/value pair. Normally this is fine (in general code I like this feature), but in this case I need access to the key in the predicate. How do I get at it? ptr_map version of above: typedef boost::ptr_map< std::string, int > bpmap; bool predicate( ??? ) { ??? } void sample( bpmap& themap ) { std::find_if( ??? ); }