std :: Kartenzugriffsoperator veraltet? Kein Operator [] stimmt mit diesen Operanden überein

8

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,

%Vor%

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?

    
user3629533 23.05.2014, 15:30
quelle

1 Antwort

38

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.

%Vor%     
juanchopanza 23.05.2014, 15:31
quelle

Tags und Links