Я намагався використовувати оператор [] для доступу до елемента в 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: помилка: передача 'const std :: map, std :: allocator>>' як 'цей' аргумент '_Tp & std :: map <_Key, _Tp, _Compare, _Alloc> :: operator [] ( const _Key &) [з _Key = int, _Tp = char, _Compare = std :: менше, _Alloc = std :: allocator>] 'відмовляється від кваліфікаторів
Використовуваний компілятор g ++ 4.2.1