2016-12-04 1 views
-2

Ich versuche, STL-Funktion transform zu verwenden, um alle Zeichenfolgen in einem Set auf Lowcase zu transformieren. Aber ich habe einen Fehler von C2664 bekommen. Ich frage mich, was ist falsch mit meinem Code?in einer Menge Umwandlung in Lowcase C++ - Fehler C2664

set<string> mydoc; 
mydoc.insert("ABCD"); 
transform(mydoc.begin(), mydoc.end(), mydoc.begin(), ::tolower); 
copy(mydoc.begin(), mydoc.end(), output); 
+0

Kann die [Tag Info] (http://StackOverflow.com/Tags/C2664/info) nicht gut genug erklären? –

+0

1. Was ist der Typ, auf den sich jeder Iterator von 'set ' bezieht (was ist im Set gespeichert)? 2. Was erwartet der Typ "tolower"? – Pixelchemist

+0

@Pixelchemist 'ostream_iterator Ausgabe (cout, "\ n");' ist der Iterator –

Antwort

0
  1. können Sie keine std::string-tolower passieren.
  2. Der C++ 11 set Iterator ist const.

Daher sollten Sie wahrscheinlich gelten tolower zu jedem string wenn sie in den set Einsetzen statt es danach zu ändern, weil Sie Zeit verschwenden müssten durch jedes Element in einem sortierten Behälter wieder einsetzen.