Maison >développement back-end >C++ >Const Map Access : pourquoi utiliser `at()` au lieu de `operator[]` ?
Accès aux éléments dans une carte Const : Operator[] vs. at()
Lorsque vous travaillez avec des cartes constantes, accédez aux éléments à l'aide de l'opérateur[ ] peut échouer. Cependant, utiliser at() est une alternative viable. Pourquoi est-ce le cas ?
Dans une carte non const, Operator[] remplit deux fonctions :
Cependant, dans une carte const, Operator[] n'est pas autorisé à modifier la structure de données sous-jacente. Par conséquent, il ne peut exécuter que la première fonction et génère une erreur lorsqu'il tente d'insérer un nouvel élément à l'aide de la deuxième fonction.
En revanche, at() est une méthode introduite en C 11 spécifiquement pour accéder aux éléments d'un carte const. Il offre plusieurs avantages :
Pour ces raisons, at() est la méthode recommandée pour accéder aux éléments dans un const std :: carte. L'exemple de code :
#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 }
Sera affiché :
c error: can't access elements with operator[] in a const std::map
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!