Ich A
vom Typ map<string, int>
und string s
in meinem Programm unter Verwendung einer Variablen:Warum hätte ich einen Fehler kompilieren müssen, wenn ich eine STL-Map verwende?
map<string, int> A;
A["X"] = 10;
string s = "LXX";
int ans += A[s[2]];
, aber wenn ich den Code ausführen, kompilieren Fehler kommt:
no match for 'operator[]' (operand types are 'std::map<std::__cxx11::basic_string<char>, int>' and '__gnu_cxx::__alloc_traits<std::allocator<char> >::value_type {aka char}')
ein Zeichen in String wie s[2]
kann kein Index einer Karte sein? Wie sollte ich es richtig benutzen, um das zu bekommen (A[s[2]]
)?
Wenn Sie unsere Hilfe mit Ihrem Problem wollen, dann sollten Sie zunächst erstellen [Minimal, vollständig und prüfbare Beispiel] (http://stackoverflow.com/help/mcve) Das zeigt das Problem. Bearbeiten Sie dann Ihre Frage, um dieses Beispiel einzuschließen (mit einem Kommentar zu der Zeile, die den Fehler verursacht), und die * Complete * -Ausgabe des Compilers, einschließlich möglicher Informationsnotizen. Auch bitte [lesen Sie, wie man gute Fragen stellt] (http://stackoverflow.com/help/how-to-ask). –
fehlender Kontext aus Ihrem Programm ... aber ich nehme an, dass Sie den Int durch die Zeichenkette abbilden, richtig? Also sollte nur A [s] dein Int bekommen. – BeerBaron
's [i]' ist ein 'char', nicht ein' std :: string', also haben Sie einen Typ, der nicht übereinstimmt. – hnefatl