Почему я не могу сделать std :: map.begin () + 1?
у меня естьstd::map
, который я хочу перебрать, начиная со второй записи.
Я могу обойти это нормально, но меня смущает, почему «очевидный» синтаксис не компилируется. Сообщение об ошибке не помогает, потому что оно относится кstd::string
, который я здесь не использую.
Вот код
// suppose I have some map ...
std::map<int, int> pSomeMap;
// this is fine ...
std::map<int, int>::const_iterator pIterOne = pSomeMap.begin();
++pIterOne;
// this doesn't compile ...
std::map<int, int>::const_iterator pIterTwo = pSomeMap.begin() + 1;
VS2012 выдает следующую ошибку в приведенной выше строке
error C2784: 'std::_String_iterator<_Mystr> std::operator +
(_String_iterator<_Mystr>::difference_type,std::_String_iterator<_Mystr>)' :
could not deduce template argument for 'std::_String_iterator<_Mystr>' from 'int'
Кто-нибудь может объяснить, что здесь происходит?