Tentei usar o operador [] para acessar o elemento em um mapa const C ++, mas esse método falhou. Também tentei usar "at ()" para fazer a mesma coisa. Funcionou dessa vez. No entanto, não consegui encontrar nenhuma referência sobre o uso de "at ()" para acessar o elemento em um mapa const C ++. É "at ()" uma função recém-adicionada no mapa C ++? Onde posso encontrar mais informações sobre isso? Muito obrigado!
Um exemplo poderia ser o seguinte:
#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
}
Para usar "B [3]", ele retornou os seguintes erros durante a compilação:
t01.cpp: 14: erro: passando 'const std :: map, std :: allocator>>' como 'este' argumento de '_Tp & std :: map <_Key, _Tp, _Compare, _Alloc> :: operator [] ( const _Key &) [with _Key = int, _Tp = char, _Compare = std :: less, _Alloc = std :: allocator>] 'descarta qualificadores
O compilador usado é g ++ 4.2.1