Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219

    [c++]Funzionamento degli iteratori

    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?

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    1) Un const_iterator non consente di modificare il valore a cui "punta", un iterator si.
    2) Si, viene sovrascritto.

    A grandi linee un iterator si comporta come un normale puntatore (e in effetti nelle prime versioni di STL, un iteratore era un semplice typedef di un puntatore, mentre nelle implementazioni più recenti è una classe).
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.