Saya mencoba menggunakan operator [] mengakses elemen dalam peta const C ++, tetapi metode ini gagal. Saya juga mencoba menggunakan "at ()" untuk melakukan hal yang sama. Kali ini berhasil. Namun, saya tidak dapat menemukan referensi tentang penggunaan "at ()" untuk mengakses elemen di peta C ++ const. Apakah "at ()" adalah fungsi yang baru ditambahkan di peta C ++? Di mana saya dapat menemukan info lebih lanjut tentang ini? Terima kasih banyak!
Contohnya adalah sebagai berikut:
#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
}
Untuk menggunakan "B [3]", ini mengembalikan kesalahan berikut selama kompilasi:
t01.cpp: 14: error: passing 'const std :: map, std :: alocator>>' sebagai argumen 'this' dari '_Tp & std :: map <_Key, _Tp, _Compare, _Alloc> :: operator [] ( const _Key &) [dengan _Key = int, _Tp = char, _Compare = std :: less, _Alloc = std :: alokator>] 'membuang qualifier
Kompiler yang digunakan adalah g ++ 4.2.1