J'ai essayé d'utiliser l'opérateur [] pour accéder à l'élément dans une carte const C ++, mais cette méthode a échoué. J'ai aussi essayé d'utiliser "at ()" pour faire la même chose. Cela a fonctionné cette fois. Cependant, je n'ai trouvé aucune référence sur l'utilisation de "at ()" pour accéder à l'élément dans une carte const C ++. "At ()" est-il une fonction nouvellement ajoutée dans la carte C ++? Où puis-je trouver plus d'informations à ce sujet? Merci beaucoup!
Un exemple pourrait être le suivant:
#include <iostream>
#include <map>
using namespace std;
int main()
{
map<int, char> A;
A[1] = 'b';
A[3] = 'c';
const map<int, char> B = A;
cout << B.at(3) << endl; // it works
cout << B[3] << endl; // it does not work
}
Pour utiliser "B [3]", il a renvoyé les erreurs suivantes lors de la compilation:
t01.cpp: 14: erreur: passer 'const std :: map, std :: allocator>>' comme 'this' argument de '_Tp & std :: map <_Key, _Tp, _Compare, _Alloc> :: operator [] ( const _Key &) [with _Key = int, _Tp = char, _Compare = std :: less, _Alloc = std :: allocator>] 'ignore les qualificatifs
Le compilateur utilisé est g ++ 4.2.1