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