C++ Baza danych obiektowo
Ostatnio zmodyfikowano 2017-12-17 17:54
atub Temat założony przez niniejszego użytkownika |
» 2017-12-17 16:19:42 W przypadku tablicy obiektów można to zrobić w ten sam sposób ? |
|
jankowalski25 |
» 2017-12-17 17:15:53 Algorytm jest ten sam dla tablicy obiektów dowolnego typu. W sumie to są trzy oddzielne przypadki: 1. Jeśli wykonasz tylko pierwszy krok, to otrzymasz tablicę podziurawioną jak ser szwajcarski i musisz pamiętać, które elementy są usunięte, a które nie. 2. Po zastosowaniu pierwszych dwóch kroków musisz zapamiętywać pojemność tablicy oraz liczbę elementów, aby nie korzystać z tych, które są usunięte. 3. Wykonanie wszystkich trzech kroków oznacza, że zawsze kopiujesz wszystkie elementy do nowej tablicy (wtedy wystarczy kopiować tylko to, co nie jest usuwane). |
|
mateczek |
» 2017-12-17 17:54:14 ja bym to zrobił coś w ten deseń #include<string> #include<list> #include<iostream> using namespace std; class Osoba { friend ostream & operator <<( ostream & ss, Osoba & os ); string imie; string nazwisko; int wiek; public: Osoba( string im, string naz, int _wiek ) : imie( im ) , nazwisko( naz ) , wiek( _wiek ) { } void setData( string im, string naz, int _wiek ) { imie = im; nazwisko = naz; wiek = _wiek; } bool operator ==( const Osoba & os ) { return( imie == os.imie ) &&( nazwisko == os.nazwisko ) &&( wiek == os.wiek ); } }; ostream & operator <<( ostream & ss, Osoba & os ) { return ss << os.imie << " " << os.nazwisko << " " << os.wiek; }
class listaOsob : public std::list < Osoba > { public: void dodaj_osobe( Osoba & os ) { push_back( os ); } void wyswietl_osoby() { for( list < Osoba >::iterator it = begin(); it != end(); it++ ) { cout <<( * it ) << endl; } } void usunOsobe( Osoba & os ) { for( list < Osoba >::iterator it = begin(); it != end(); it++ ) { if(( * it ) == os ) { remove( * it ); break; } } } }; int main() { listaOsob lista; Osoba temp( "marek", "marecki", 12 ); lista.dodaj_osobe( temp ); temp.setData( "piotrek", "piotrowski", 14 ); lista.dodaj_osobe( temp ); temp.setData( "adam", "adamski", 22 ); lista.dodaj_osobe( temp ); lista.wyswietl_osoby(); cout << endl; temp.setData( "piotrek", "piotrowski", 14 ); lista.usunOsobe( temp ); lista.wyswietl_osoby(); } |
|
1 « 2 » |