Có lý do gì để chuyển tham chiếu tới bản đồ STL làm const khiến toán tử [] bị ngắt? Tôi nhận được lỗi biên dịch này (gcc 4.2) khi tôi sử dụng const:C++ const std :: tham chiếu bản đồ không biên dịch
error: no match for ‘operator[]’ in ‘map[name]’
Đây là chức năng nguyên mẫu:
void func(const char ch, std::string &str, const std::map<std::string, std::string> &map);
Và, tôi nên đề cập đến rằng không có vấn đề khi tôi loại bỏ các const từ khóa ở phía trước std :: map.
Nếu tôi được hướng dẫn chính xác, toán tử [] sẽ thực sự chèn một cặp mới vào bản đồ nếu nó không tìm thấy khóa, tất nhiên sẽ giải thích tại sao điều này xảy ra, nhưng tôi không thể tưởng tượng điều này sẽ là hành vi chấp nhận được.
Nếu có phương pháp tốt hơn, như sử dụng hãy tìm thay vì [], tôi rất cảm kích. Tôi dường như không thể tìm được công việc mặc dù ... Tôi nhận được const lỗi lặp không khớp.
Cảm ơn.