Tôi đã cố gắng sử dụng toán tử [] truy cập phần tử trong bản đồ const C ++, nhưng phương pháp này không thành công. Tôi cũng đã cố gắng sử dụng "at ()" để làm điều tương tự. Lần này nó đã hoạt động. Tuy nhiên, tôi không thể tìm thấy bất kỳ tài liệu tham khảo nào về việc sử dụng "at ()" để truy cập phần tử trong bản đồ const C ++. "At ()" có phải là một hàm mới được thêm vào trong bản đồ C ++ không? Tôi có thể tìm thêm thông tin về điều này ở đâu? Cảm ơn rât nhiều!
Một ví dụ có thể là như sau:
#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
}
Đối với việc sử dụng "B [3]", nó trả về các lỗi sau trong quá trình biên dịch:
t01.cpp: 14: error: truyền 'const std :: map, std :: Distribator>>' làm đối số 'this' của '_Tp & std :: map <_Key, _Tp, _Compare, _Alloc> :: operator [] ( const _Key &) [với _Key = int, _Tp = char, _Compare = std :: less, _Alloc = std :: Distribator>] 'loại bỏ các định nghĩa
Trình biên dịch được sử dụng là g ++ 4.2.1