Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    [c++] Come si rimuove uno specifico elemento da un vettore?

    Ho ordinato un vettore in modo crescente con sort e adesso vorrei rimuovere i valori che risultano più volte che sono riuscito ad identificare con questo codice:

    codice:
    //provo a rimuovere doppioni e presenze multiple...
    
    for (int b=0; b < vettore.size(); b++) {
     
     if (vettore[b] == vettore[b+1]) {
    
    cout << vettore[b]; 
    cout << " valore uguale da eliminare! ";
    cin.get();
    cin.get();
                  
                                  
    }                                
        
    }
    Come faccio ad eliminare da vettore il valore vettore[b] correttamente identificato?

    Grazie a chi mi rinfresca la memo!


  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    Se è un vettore creato dinamicamente potresti crearti un altro vettore contenente tutti i valori da tenere e poi eliminarti il vettore iniziale.
    Se è un vettore statico puoi farci ben poco,l'unica cosa che potresti fare è valorizzare il campo con un codice che per te identifica un errore.
    Oppre in alternativa potresti spostare i "valori duplicati" in fondo all'array...ma di fatto non sono eliminati perchè non c'è modo di eliminare un indice dell'array.

    In alternativa potresti usare le liste concatenate semplici che hanno proprio la caratteristicha di poter eliminare fisicamente un determinato Nodo

  3. #3
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725
    Originariamente inviato da Marco1995
    Se è un vettore creato dinamicamente potresti crearti un altro vettore contenente tutti i valori da tenere e poi eliminarti il vettore iniziale.
    Se è un vettore statico puoi farci ben poco,l'unica cosa che potresti fare è valorizzare il campo con un codice che per te identifica un errore.
    Oppre in alternativa potresti spostare i "valori duplicati" in fondo all'array...ma di fatto non sono eliminati perchè non c'è modo di eliminare un indice dell'array.

    In alternativa potresti usare le liste concatenate semplici che hanno proprio la caratteristicha di poter eliminare fisicamente un determinato Nodo
    Avevo pensato anche io a spostare l'elemento trovato in fondo al vettore e poi rimuoverlo con vettore.pop() ma come si fa a spostarlo in fondo al vettore? Non ricordo... Grazie!

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    Sarebbe una soluzione che non ti converrebbe...perchè si sballerebbero tuti i valori già ordinati...la cosa migliore da fare è lasciarlo lì...se poi ad esempio vuoi stampare i valori "non duplicati" ti basta fare una condizione del tipo:
    codice:
    ...
    ...
    if(vett[i]!=vett[i+1])
       cout << vett[i];

  5. #5
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725
    Originariamente inviato da Marco1995
    Sarebbe una soluzione che non ti converrebbe...perchè si sballerebbero tuti i valori già ordinati...la cosa migliore da fare è lasciarlo lì...se poi ad esempio vuoi stampare i valori "non duplicati" ti basta fare una condizione del tipo:
    codice:
    ...
    ...
    if(vett[i]!=vett[i+1])
       cout << vett[i];
    Questa tua ultima cosa mi ha fatto pensare che potrei risolvere così...

    codice:
    ...
    ...
    if(vett[i]!=vett[i+1])
       //cout << vett[i];
       vettore2.push_back(vett[i]);

    Dove vettore2 è quello contenente valori univoci...

    Grazie credo possa funzionare così!

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    [QUOTE[
    Dove vettore2 è quello contenente valori univoci...
    [/QUOTE]

    Ti avevo già accennato alla creazione di un nuovo array . .

    Dal post sopra:
    potresti crearti un altro vettore contenente tutti i valori da tenere

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.