我有一個std::map
,我想從第二項開始迭代。爲什麼我不能做std :: map.begin()+ 1?
我可以解決這個問題,但我很困惑爲什麼「明顯」的語法不能編譯。錯誤信息沒有幫助,因爲它指的是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給出了上面的行
錯誤C2784以下錯誤:「的std :: _ String_iterator < _Mystr>的std ::操作者+(_ String_iterator < _Mystr> :: difference_type,std :: _ String_iterator < _Mystr>)':無法從'int'推導'std :: _ String_iterator < _Mystr>'的模板參數
任何人都可以解釋這裏發生了什麼?
有史以來最奇怪的錯誤信息? – curiousguy