Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <queue>
- #include <conio.h>
- struct SOsoba
- {
- std::string imie;
- std::string nazwisko;
- int kolejnosc;
- std::string inneDane;
- };
- struct PorownajOsoby
- {
- bool operator ()( const SOsoba & osoba1, const SOsoba & osoba2 )
- {
- //kolejność - rosnąco
- if( osoba1.kolejnosc > osoba2.kolejnosc ) return true;
- if( osoba1.kolejnosc < osoba2.kolejnosc ) return false;
- //nazwisko - rosnąco
- if( osoba1.nazwisko > osoba2.nazwisko ) return true;
- if( osoba1.nazwisko < osoba2.nazwisko ) return false;
- //imię - malejąco
- if( osoba1.nazwisko < osoba2.nazwisko ) return true;
- if( osoba1.nazwisko > osoba2.nazwisko ) return false;
- return false;
- }
- };
- typedef std::priority_queue < SOsoba, std::vector < SOsoba >, PorownajOsoby > TKolejkaPriorytetowaOsob;
- void WstawOsobe( TKolejkaPriorytetowaOsob & kp, const char * imie, const char * nazwisko, int kolejnosc, const char * inneDane )
- {
- SOsoba nowaOsoba;
- nowaOsoba.imie = imie;
- nowaOsoba.nazwisko = nazwisko;
- nowaOsoba.kolejnosc = kolejnosc;
- nowaOsoba.inneDane = inneDane;
- kp.push( nowaOsoba );
- }
- int main()
- {
- TKolejkaPriorytetowaOsob kolejkaPriorytetowa;
- WstawOsobe( kolejkaPriorytetowa, "Imie", "Nazwisko", 1, "Pierwszy" );
- WstawOsobe( kolejkaPriorytetowa, "Imie", "Nazwisko", 1, "Drugi" );
- WstawOsobe( kolejkaPriorytetowa, "Imie", "Nazwisko", 1, "Trzeci" );
- WstawOsobe( kolejkaPriorytetowa, "Imie", "Ziomek", 1, "Czwarty" );
- while( kolejkaPriorytetowa.size() > 0 )
- {
- SOsoba odczytana = kolejkaPriorytetowa.top();
- kolejkaPriorytetowa.pop();
- std::cout << odczytana.imie << "; " << odczytana.nazwisko << "; " << odczytana.kolejnosc << "; " << odczytana.inneDane << "; " << std::endl;
- }
- getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement