[c++]eliminare elemento i-esimo vector stl

di il
3 risposte

[c++]eliminare elemento i-esimo vector stl

Salve,
stò utilizzando vector della libreria stl,adesso vorrei eliminare l'elemento i-esimo da tale vettore ma non so quale funzione usare... qualcuno di buon cuore può aiutarami??
grazie in anticipo, buona giornata
maria

3 Risposte

  • Re: [c++]eliminare elemento i-esimo vector stl

    Dipende dal contesto, puoi usare tanti modi. uno è:
    
    vec.erase(vec.begin()+i);
    
    ma ti causa problemi se è in un ciclo loop. gli iteratori di un vettore vengono invalidati ed ogni erase.
    Un altro modo è quello di usare std::remove oppure std::remove_if insieme ad vec.erase ma qui devi avere un motivo per eliminarlo.
    
    vec.erase(std::remove(vec.begin(),vec.end(),causa),vec.end());
    
  • Re: [c++]eliminare elemento i-esimo vector stl

    Grazie mille per aver risposto, alla fine ho usaro il metodo erase ed in effetti mi elimina l'elemento specificato solo ad un certo punto mi si presenta il seguente errore
     Expression:vectore subscript of range
    non ho ben chiaro da cosa è generato l'errore, ho anche pensato che fosse il metodo quindi ho usato la seconda soluzione con il metodo remove ed in questo caso ho proprio errori in fase di compilazione.
    c'è qualcuno che può aiutarmi?? grazie ancora
  • Re: [c++]eliminare elemento i-esimo vector stl

    Posta il tuo codice se vuoi che ti aiuto, così stiamo andando alla ciecca. Il primo metodo come ti ho detto è utile solo in certi casi ma rende non validi gli indici (iteratori del vettore) anche se il tuo problema mi sembra + logico che derivante da questo. Per usare il secondo metodo devi includere il header algorithm così viene trovata la funzione remove oppure remove_if quindi:
    
    #include <algorithm>
    
    dovrebbe risolvere i problemi di compilazione.
Devi accedere o registrarti per scrivere nel forum
3 risposte