Wie bewerben Sie sich transformieren, um eine STL-map in C++

In C++, ich bin mit der Transformation zu ändern, die Werte einer map in Großbuchstaben um.

  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);
         });

Dieser gibt mir folgende Kompilierungsfehler:

/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> >&)

Ich glaube, es gibt etwas falsch mit der Art der Argumentation in meinem lambda-Ausdruck. Es ist wahrscheinlich etwas einfach, aber ich kann nicht scheinen, um herauszufinden, was erwartet wird.

  • Anstatt davon ausgehen, ein container speichert eine bestimmte Art. Sie können den Zugriff auf die Typ-Informationen über value_type. std::map<std::string, std::string>::value_type
  • danke, ich Lerne noch c++ - Idiome...
InformationsquelleAutor daj | 2011-10-24
Schreibe einen Kommentar