#c
#c
Вопрос:
У меня была эта проблема, когда у меня был map<int, vector<int> > graph
, и я попытался получить доступ к graph[i].begin()
where int i = 0;
, и она не может быть решена.
Ошибка:
error: no viable overloaded operator[] for type 'const map<int, vector<int> >
Кто-нибудь может это объяснить? Спасибо!
Комментарии:
1. существует ли ключ со значением ноль в
graph
?2. Покажите полный код и покажите полное сообщение об ошибке.
Ответ №1:
operator[]
не является const
членом, и поэтому не может быть применен к const map
.
Почему operator[]
это nonconst? Потому что она вставит элемент в карту, если он не существует (что изменит карту).
Ответ №2:
Обратите внимание на «const» в сообщении об ошибке. Поскольку operator[] на карте создаст элемент по требованию, operator [] должен иметь доступ на запись. В вашем случае это не так, поэтому неконстантный оператор[] нежизнеспособен.