Zugriff auf Elemente in einer Const-Map: Operator[] vs. at()
Beim Arbeiten mit konstanten Maps: Zugriff auf Elemente mit Operator[ ] kann fehlschlagen. Die Verwendung von at() ist jedoch eine praktikable Alternative. Warum ist das so?
In einer nicht konstanten Karte führt Operator[] zwei Funktionen aus:
Allerdings ist es in einer const-Map dem Operator[] nicht gestattet, die zugrunde liegende Datenstruktur zu ändern. Daher kann es nur die erste Funktion ausführen und gibt einen Fehler aus, wenn versucht wird, mit der zweiten Funktion ein neues Element einzufügen.
Im Gegensatz dazu ist at() eine in C 11 eingeführte Methode speziell für den Zugriff auf Elemente in a const-Karte. Es bietet mehrere Vorteile:
Aus diesen Gründen ist at() die empfohlene Methode für den Zugriff auf Elemente in einem const std::map. Der Beispielcode:
#include <iostream> #include <map> int main() { std::map<int, char> A; A[1] = 'b'; A[3] = 'c'; const std::map<int, char>& B = A; std::cout << B.at(3) << std::endl; // it works std::cout << B[3] << std::endl; // it does not work }
Wird ausgegeben:
c error: can't access elements with operator[] in a const std::map
Das obige ist der detaillierte Inhalt vonConst Map Access: Warum „at()' anstelle von „operator[]' verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!