У меня есть вопрос, касающийся передачи карты по ссылке. Давайте рассмотрим следующий фрагмент кода:
void doNotChangeParams(const map<int, int>& aMap){
if (aMap.find(0) != aMap.end()){
cout << "map[0] = " << aMap[0] << endl;
}
}
и у меня есть карта myMap и я делаю вызов следующим образом: doNotChangeParams (myMap)
Теперь видно, что я не изменяю параметр aMap внутри функции. Тем не менее мой компилятор g ++ жалуется, что доступ aMap [0] отбрасывает спецификатор const .
Я помещаю const , так как я хочу сказать читателям этой функции, что я не изменяю аргумент. Кроме того, это помогает генерировать ошибки компиляции, когда я случайно изменяю карту.
В настоящее время я должен отбросить const , и я думаю, что из-за сигнатуры метода читатель не сможет понять вышеуказанное значение. Я знаю, что комментарий подойдет, но я полагаю, я бы просто спросил, если вы знаете какие-либо "программные" способы.
Спасибо, ребята.