He intentado utilizar el operador [] para acceder al elemento en un mapa const C++, pero este método ha fallado. También traté de usar "at()" para hacer lo mismo. Funcionó esta vez. Sin embargo, no pude encontrar ninguna referencia sobre el uso de "at()" para acceder al elemento en un mapa const C++. ¿Está "at()" una función recién agregada en el mapa C++? ¿Dónde puedo encontrar más información sobre esto? ¡Muchas gracias!C++ const acceso a elemento de mapa
Un ejemplo podría ser el siguiente:
#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 el uso de "B [3]", volvió los siguientes errores durante la compilación:
t01.cpp:14: error: passing ‘const std::map, std::allocator > >’ as ‘this’ argument of ‘_Tp& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const _Key&) [with _Key = int, _Tp = char, _Compare = std::less, _Alloc = std::allocator >]’ discards qualifiers
El compilador utilizado es g ++ 4.2.1
¿Es posible que "at" devuelva un valor predeterminado en lugar de arrojar una excepción? – user1202136
'at()' debería ser C++ 11 solamente – Deqing
Estoy usando 'at()' con en VS2013 en un proyecto para usar el kit de herramientas VS2010. Pensé que eso significaba que no estaba usando C++ 11 ... ¿Pero compila ...? – thomthom