C'è un motivo per cui il passaggio di un riferimento a una mappa STL come const causa la rottura dell'operatore []? Ottengo questo errore del compilatore (gcc 4.2) quando uso const:C++ const std :: il riferimento della mappa non riesce a compilare
error: no match for ‘operator[]’ in ‘map[name]’
Ecco il prototipo di funzione:
void func(const char ch, std::string &str, const std::map<std::string, std::string> &map);
E, devo dire che non c'è nessun problema quando rimuovo il const parola chiave davanti a std :: mappa.
Se sono stato istruito correttamente, l'operatore [] inserirà effettivamente una nuova coppia nella mappa se non trova la chiave, il che spiegherebbe ovviamente perché ciò accade, ma non posso immaginare che questo sarebbe mai un comportamento accettabile.
Se esiste un metodo migliore, come utilizzare trovare anziché [], lo apprezzerei. Non riesco a trovare trovare a lavorare sia se ... Io ricevo const errori iteratori non corrispondenti.
Grazie.