Non capisco bene come sono implementati gli iteratori come quelli std::vector e std::list, faccio un esempio:
codice:
list<string> l;
list<string>::iterator i;
i=l.begin();
A questo punto i in qualche modo, conosce la posizione del primo elemento del vettore.
Però non capisco come funziona: su c++ reference dice che ci sono due versioni, una che ritorna un iteratore costante (const_iterator begin() const), e una che ritorna un iteratore non costante (iterator begin()), però const_iterator non è veramente costante, lo posso incrementare e non mi da alcun errore:
codice:
list<string> l;
list<string>::const_iterator i=l.begin();
i++; // non mi da errore di sintassi
Allora ho due domande:
-Qual'è la differenza tra usare un iteratore costante e non costante?
-Quando faccio un assegnamento (tipo i=l.begin()), viene creato un iteratore nuovo, se l' iteratore era già stato assegnato, quello vecchio viene distrutto?