[C++] Usuwanie elementu z wektora struktur
Ostatnio zmodyfikowano 2020-05-05 22:54
Biedrzyk Temat założony przez niniejszego użytkownika |
[C++] Usuwanie elementu z wektora struktur » 2020-05-05 21:37:12 Witam, stworzyłem w programie książka adresowa funkcję usuń adresata. Z racji tego,że imiona czy nazwiska mogą się powtarzać ustawiłem opcję usuwania osoby przez wyszukiwanie po numerze telefonu. W założeniu chodziło mi o to,żeby po wpisaniu numeru telefonu program znalazł daną osobę, usunął ją z wektora, a pozostałe wpisy zapisał z powrotem do pliku (nadpisał istniejące wpisy). Podaję kod funkcji: void usunAdresata( vector < Adresat > & adresaci, int iloscAdresatow ) { string numer; cin >> numer; for( int i = 0; i < iloscAdresatow; i++ ) { if( adresaci[ i ].nr_tel == numer ) { cout << "Usuwasz "; cout << adresaci[ i ].id << "."; cout << adresaci[ i ].nazwisko << " "; cout << adresaci[ i ].imie << " "; cout << adresaci[ i ].nr_tel << " "; cout << adresaci[ i ].email << " "; cout << adresaci[ i ].adres << " "; cout << "ze swojej listy znajomych. "; cout << endl; adresaci.erase( adresaci.begin() +( adresaci[ i ].nr_tel == numer ) ); } } for( int i = 0; i < iloscAdresatow; i++ ) { cout << adresaci[ i ].id << "."; cout << adresaci[ i ].nazwisko << " "; cout << adresaci[ i ].imie << " "; cout << adresaci[ i ].nr_tel << " "; cout << adresaci[ i ].email << " "; cout << adresaci[ i ].adres << " "; cout << endl; } fstream plik; plik.open( "KsiazkaAdresowa.txt", ios::out ); if( plik.good() ) { plik << adresaci[ iloscAdresatow ].id << "|"; plik << adresaci[ iloscAdresatow ].imie << "|"; plik << adresaci[ iloscAdresatow ].nazwisko << "|"; plik << adresaci[ iloscAdresatow ].nr_tel << "|"; plik << adresaci[ iloscAdresatow ].email << "|"; plik << adresaci[ iloscAdresatow ].adres << "|"; plik << endl; plik.close(); } system( "pause" ); }
drugą pętlę dodałem na czas testów żeby sprawdzić czy usuwanie działa - co ciekawe usuwa zawsze drugą osobę ale przy wyświetlaniu kopiuje następną na jej miejsce. Jak dobrze usunąć taką osobę a potem wpisać pozostałe elementy wektora do pliku? Mógłby mi to ktoś objaśnić? Z góry dziękuję :) |
|
pekfos |
» 2020-05-05 22:54:03 adresaci.erase( adresaci.begin() +( adresaci[ i ].nr_tel == numer ) );
|
Ten warunek nie ma tu żadnego sensu. |
|
« 1 » |