연산자 []를 사용하여 const C ++ 맵의 요소에 액세스하려고했지만이 메서드는 실패했습니다. 또한 "at ()"를 사용하여 동일한 작업을 수행하려고했습니다. 이번에는 효과가있었습니다. 그러나 "at ()"를 사용하여 const C ++ 맵의 요소에 액세스하는 방법에 대한 참조를 찾을 수 없습니다. "at ()"는 C ++ 맵에 새로 추가 된 함수입니까? 이에 대한 자세한 정보는 어디에서 찾을 수 있습니까? 대단히 감사합니다!
예는 다음과 같습니다.
#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
}
"B [3]"를 사용하는 경우 컴파일 중에 다음 오류가 반환되었습니다.
t01.cpp : 14 : 오류 : '_Tp & std :: map <_Key, _Tp, _Compare, _Alloc> :: operator [] (의'this '인수로'const std :: map, std :: allocator>> '전달 const _Key &) [with _Key = int, _Tp = char, _Compare = std :: less, _Alloc = std :: allocator>] '는 한정자를 버립니다.
사용 된 컴파일러는 g ++ 4.2.1입니다.