¿Hay alguna razón por la que pasar una referencia a un mapa STL como const hace que se rompa el operador []? Me sale este error del compilador (gcc 4.2) cuando se utiliza const:C++ const std :: referencia de mapa no se puede compilar
error: no match for ‘operator[]’ in ‘map[name]’
Aquí está el prototipo de la función:
void func(const char ch, std::string &str, const std::map<std::string, std::string> &map);
Y, debo mencionar que no hay ningún problema cuando quito la const palabra clave delante de std :: map.
Si me han instruido correctamente, el operador [] realmente insertará un nuevo par en el mapa si no encuentra la clave, lo que por supuesto explicaría por qué sucede esto, pero no me puedo imaginar que esto alguna vez sería un comportamiento aceptable.
Si hay un método mejor, como usar encontrar en lugar de [], se lo agradecería. Parece que no puedo encontrar trabajo tampoco ... Recibo const errores de iterador no coincidentes.
Gracias.