在C++中,我使用轉換將地圖的所有值更改爲大寫。如何將轉換應用於C++中的STL映射
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);
});
這給了我下面的編譯錯誤:
/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> >&)
我覺得有些不對勁與參數的類型在我的lambda表達式。這可能很簡單,但我似乎無法弄清楚預期的結果。
而不是假設容器存儲特定類型。您可以通過value_type訪問類型信息。 'std :: map :: value_type' –
謝謝,我還在學習C++習語... – daj