Nach Ссылка kann ich entweder m[k]
oder m.at(k)
verwenden, um auf den Wert von zuzugreifen ein Schlüssel k
in einer Karte m
. Wenn ich es jedoch versuche,
in meinem Code, wo derivMap ist ein Element vom Typ std::map<std::string,std::string>
Visual Studio 2013 gibt mir die Warnung
no operator [] stimmt mit diesen Operanden überein
Wenn ich jedoch meinen Code in
ändere %Vor%Ich bekomme keinen Fehler. Haben Sie einen Einblick in dieses Problem?
map::operator[]
ist nicht veraltet.
Ich nehme an, dass Sie versuchen, den Operator in einem Kontext aufzurufen, in dem derivMap
ist const
. map::operator[]
hat keine const
overload, da die Map durch Einfügen eines Elements geändert werden kann, wenn kein passender Schlüssel vorhanden ist. map::at()
hat andererseits eine const
Überladung, weil es entworfen wurde, um zu werfen, wenn ein Element nicht gefunden wird.