¿Qué hay de lo siguiente:
typedef std::unordered_map<int,std::string> map_type;
typedef std::unordered_map<int,std::string>::value_type map_value_type;
map_type m;
if (m.end() != find_if(m.begin(),m.end(),[](const map_value_type& vt)
{ return vt.second == "abc"; }
))
std::cout << "Value found." << std::end;
else
std::cout << "Value NOT found." << std::end;
O usando una variable externa que se captura:
std::string value = "abc";
if (m.end() != find_if(m.begin(),m.end(),[&value](const map_value_type& vt)
{ return vt.second == value; }))
std::cout << "Value found." << std::end;
else
std::cout << "Value NOT found." << std::end;
¿predicado personalizado? Todo lo que necesitas ya está en STL. 'compose1 (bind2nd (equal_to(), value), select2nd >())' –
ephemient
@ephemient: Eso no es simple ni legible. (Además, 'select2nd', mientras que parte de la STL, no forma parte de la biblioteca estándar de C++) –
@ephemient: Ese es uno de los peores usos de STL que he visto en mi vida. –