Czy istnieje powód, dla którego przekazanie odniesienia do mapy STL jako const powoduje przerwanie pracy operatora []? Otrzymuję ten błąd kompilatora (gcc 4.2) kiedy używać const:C++ const std :: map reference nie kompiluje się
error: no match for ‘operator[]’ in ‘map[name]’
Oto prototyp funkcji:
void func(const char ch, std::string &str, const std::map<std::string, std::string> &map);
A, należy wspomnieć, że nie ma problemu, kiedy wyjąć const słowo kluczowe przed std :: map.
Jeśli zostałem poprawnie poinstruowany, operator [] wstawi nową parę do mapy, jeśli nie znajdzie klucza, co oczywiście wyjaśniłoby, dlaczego tak się dzieje, ale nie mogę sobie tego wyobrazić byłoby to kiedykolwiek dopuszczalne zachowanie.
Jeśli istnieje lepsza metoda, na przykład użycie znajdź zamiast [], byłbym wdzięczny. Wydaje się, że nie mogę znaleźć pracy albo ... Otrzymuję const niedopasowanych błędów iteratora.
Dzięki.