const로 STL 맵에 대한 참조를 전달하면 [] 연산자가 중단되는 이유가 있습니까? 여기 C++ const std :: map reference가 컴파일되지 않습니다.
함수의 프로토 타입입니다 : 내가 const를 사용할 때 나는이 컴파일러 오류 (GCC 4.2)을 얻을 나는 내가 const를 제거 할 때 아무 문제가 없음을 언급해야한다,error: no match for ‘operator[]’ in ‘map[name]’
void func(const char ch, std::string &str, const std::map<std::string, std::string> &map);
과std :: map 앞에 키워드가 있습니다.
정확하게 지시를 받았다면 [] 연산자는 키를 찾지 못하면 실제로지도에 새 쌍을 삽입합니다. 물론 이것이 왜 발생하는지 설명 할 수는 있지만 상상할 수는 없습니다. 이것은 이제까지 받아 들일만한 행동 일 것이다.
더 나은 방법이 있다면 을 사용하는 것과 같이 [] 대신을 찾으십시오. 감사하게 생각합니다. 나는 어느 쪽이든 작동하도록 찾을 수없는 것 같습니다 ... const 이터레이터 오류가 일치하지 않습니다.
감사합니다.