ฉันพยายามใช้ตัวดำเนินการ [] เข้าถึงองค์ประกอบในแมป 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 :: จัดสรร>>' เป็นอาร์กิวเมนต์ 'this' ของ '_Tp & std :: map <_Key, _Tp, _Compare, _Alloc> :: operator [] ( const _Key &) [with _Key = int, _Tp = char, _Compare = std :: less, _Alloc = std :: destroyator>] 'ทิ้งคุณสมบัติ
คอมไพเลอร์ที่ใช้คือ g ++ 4.2.1