Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626

    [c++] ma un iteratore è una reference?

    Ciao a tutti,
    Ho un dubbio:

    codice:
    int id = ...;
    vector<MyClass> vettore;
    vector<MyClass>::iterator it = find_if(vettore.begin(), vettore.end(), [id](MyClass obj){return id == obj.id;});
    if(it != vettore.end()){
       vettore.erase(it);
    }
    
    Posso usare ancora it ?

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Dipende da come intendi usarlo: se intendi dereferenziarlo con *it dopo averne fatto l'erase, non puoi usarlo.
    Se intendi usarlo per una nuova assegnazione:
    codice:
    it = find_if( /* etc */)
    si, puoi farlo.
    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.

  3. #3
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Intendevo il primo caso...volevo prendere quel it e passarlo come parametro ad una altra funzione che poi faceva un push_back su un altro vettore simile.
    In pratica spostare l'elemento da un vettore ad un altro.
    Pensavo che l'iteratore fosse una copia e che restava anche dopo la cancellazione del relativo elemento.

    Grazie

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    No, l'iteratore non fa una copia dell'elemento a cui punta nel vector. Se cancelli l'elemento nel vector invalidi l'iteratore.
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.