Ich versuche, ein Element aus einer Karte in einer for-Schleife zu bekommen. Nach dem Beispiel auf cppreference Ich versuche dies:`[]` Operator führt zu kompilieren Fehler auf Karte
#include <iostream>
#include <map>
using namespace std;
int main()
{
map<int, int> mapping;
mapping.insert(pair<int, int>(11,1));
mapping.insert(pair<int, int>(12,2));
mapping.insert(pair<int, int>(13,3));
for (const auto &it : mapping)
mapping[it]++;
cout << "array: ";
for (const auto &it : mapping)
cout << it.second << " ";
return 0;
}
Welche der folgenden Kompilierungsfehler mit gcc gibt:
main.cpp: In function 'int main()':
main.cpp:15:16: error: no match for 'operator[]' (operand types are 'std::map<int, int>' and 'const std::pair<const int, int>')
mapping[it]++;
Wenn ich es richtig das Problem zu verstehen ist, dass die auto
zu einem std::pair<const int, int>
gelöst ist, für die nein []
Operator ist definiert. Ich habe mich gefragt, ob es einen Weg gibt, dies zur Arbeit zu bringen.
Siehe für den vollständigen Übersetzungsfehler here
Im Gegensatz zu Sprachen mit ähnlicher Syntax wie C++ ist es nicht der Schlüssel. Stattdessen ist es das tatsächliche Paar in der Karte. –