не удается разрешить отображение <int, vector > graph и graph[i].begin()

#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 [] должен иметь доступ на запись. В вашем случае это не так, поэтому неконстантный оператор[] нежизнеспособен.