Объявление работает, когда я объявляю итератор следующим образом:
map<string,int>::iterator it, temp;
Почему не работает следующее тоже?
map<string,int>temp, ::iterator it;
ошибка: ожидаемый инициализатор перед ‘it’
Почему это вызывает ошибку?
iterator
это тип члена внутри std::map
контейнер, чтобы иметь переменную этого типа, вам нужно использовать правильный синтаксис, map<string,int>temp, ::iterator it;
это просто неправильно, как жалуется компилятор.
map<string,int>::iterator
это тип, ::iterator
плохо сформирован.
В первом случае вы создаете два итератора для карты stl. Во втором случае вы создаете карты stl, и c ++ не ожидает пробела в идентификаторе, и идентификатор не должен начинаться с символа «:» (правила языка c ++).