Ho un std::map
, che voglio ripetere durante l'avvio alla seconda voce.Perché non posso fare std :: map.begin() + 1?
Posso risolvere questo problema, ma sono confuso sul motivo per cui la sintassi "ovvia" non viene compilata. Il messaggio di errore non aiuta perché si riferisce a std::string
, che non sto usando qui.
Ecco po 'di codice
// 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 dà il seguente errore sulla riga sopra
errore C2784: 'std :: _ String_iterator < _Mystr> std :: operator + (_ String_iterator < _Mystr> :: difference_type, std :: _ String_iterator < _Mystr>) ': impossibile dedurre argomento modello per' std :: _ String_iterator < _Mystr> 'da' int '
Qualcuno può spiegare cosa sta succedendo qui?
Il messaggio di errore più bizzarro di sempre? – curiousguy