Есть ли причина, по которой передача ссылки на карту STL как const приводит к тому, что оператор [] прерывается? Я получаю эту ошибку компилятора (gcc 4.2), когда я использую const:
ошибка: нет соответствия для 'operator [] в "Карта [имя]
Здесь прототип функции:
void func(const char ch, std::string &str, const std::map<std::string, std::string> &map);
И я должен упомянуть, что нет проблемы, когда я удаляю ключевое слово const перед std:: map.
Если я был проинструктирован правильно, оператор [] фактически вставит новую пару в карту, если он не найдет ключ, который, конечно, объяснит, почему это происходит, но я не могу себе представить, чтобы это всегда было бы приемлемым поведением.
Если есть лучший способ, например, использовать find вместо [], я был бы признателен. Кажется, я не могу найти работу, хотя... Я получаю ошибки, не соответствующие несоответствующим итераторам.
Спасибо.