In C++, sto usando la trasformazione per modificare tutti i valori di una mappa in maiuscolo.Come applicare una trasformazione a una mappa STL in 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);
});
Questo mi dà il seguente errore di compilazione:
/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> >&)
Penso che ci sia qualcosa che non va con il tipo dell'argomento nella mia espressione lambda. Probabilmente è qualcosa di semplice, ma non riesco a capire cosa ci si aspetta.
Anziché presupporre che un contenitore memorizzi un tipo particolare. È possibile accedere alle informazioni sul tipo tramite value_type. 'std :: map :: value_type' –
grazie, sto ancora imparando gli idiomi C++ ... – daj