Trong C++, tôi đang sử dụng phép biến đổi để thay đổi tất cả các giá trị của bản đồ thành chữ hoa.Cách áp dụng biến đổi cho bản đồ STL trong 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);
});
này mang lại cho tôi những lỗi biên dịch sau:
/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> >&)
Tôi nghĩ rằng có điều gì đó sai trái với các loại đối số trong biểu thức lambda tôi. Nó có thể là một cái gì đó đơn giản, nhưng tôi dường như không thể tìm ra những gì mong đợi.
Thay vì giả sử một cửa hàng chứa một loại cụ thể. Bạn có thể truy cập thông tin loại thông qua value_type. 'std :: map :: value_type' –
cảm ơn, tôi vẫn đang học C++ thành ngữ ... – daj