Вот мой код:
#include <iostream>
#include <map>
using namespace std;
int main() {
map<int , int > myMap;
map<int , int>::iterator it;
myMap.insert(pair<int , int>(1,2));
myMap.insert(pair<int , int>(671,223));
myMap.insert(pair<int , int>(353,245352));
it = myMap.end() - 1;
cout << it->first << it->second << endl;
return 0;
}
Компиляция этого кода приводит к следующей ошибке компиляции:
error: no match for ‘operator-’ (operand types are ‘std::map<int, int>::iterator {aka std::_Rb_tree_iterator<std::pair<const int, int> >}’ and ‘int’)
it = myMap.end() - 1;
Я не знаю, почему я получаю эту ошибку, поскольку я считаю, что арифметические операции разрешены во всех типах итераторов.