En C++, estoy usando la transformación para cambiar todos los valores de un mapa a mayúsculas.Cómo aplicar la transformación a un mapa STL en C++
std::map<std::string, std::string> data = getData();
// make all values uppercase
std::transform(data.begin(), data.end(), data.begin(),
[](std::pair<std::string, std::string>& p) {
boost::to_upper(p.second);
return(p);
});
Esto me da el siguiente error de compilación:
/opt/local/include/gcc46/c++/bits/stl_algo.h:4805:2: error: no match for call to '(main(int, char**)::<lambda(std::pair<std::basic_string<char>, std::basic_string<char> >&)>) (std::pair<const std::basic_string<char>, std::basic_string<char> >&)
Creo que hay algo mal con el tipo del argumento en mi expresión lambda. Probablemente sea algo simple, pero parece que no puedo entender lo que se espera.
En lugar de asumir que un contenedor almacena un tipo particular. Puede acceder a la información de tipo a través de value_type. 'std :: map :: value_type' –
gracias, todavía estoy aprendiendo modismos en C++ ... – daj