Narzędzia użytkownika

Narzędzia witryny


stable_sort

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Previous revision
Last revision Both sides next revision
stable_sort [2008/12/10 21:06]
vtech
stable_sort [2008/12/10 22:15]
vtech
Linia 44: Linia 44:
  //​konstruktor  //​konstruktor
  rekord(string im, string nazw, string t):​imie(im),​nazwisko(nazw),​tel(t) {};  rekord(string im, string nazw, string t):​imie(im),​nazwisko(nazw),​tel(t) {};
 + //operator porównania wykorzystywany przez algorytm stable_sort
 + bool operator <( const rekord& b ) const
 + {
 + switch(comp_mode)//​wybór sortowanego pola
 + {
 + case by_imie:​ if(imie.compare(b.imie)<​0)return true;​ break;​
 + case by_nazwisko:​ if(nazwisko.compare(b.nazwisko)<​0)return true;break;
 + case by_tel:​ if(tel.compare(b.tel)<​0)return true;​ break;​
 + }
 + return false;
 + };
  //operator wpisu do strumienia - dla wygody drukowania rekordu  //operator wpisu do strumienia - dla wygody drukowania rekordu
  friend ostream&​ operator<<​(ostream&​ str,const rekord& source);  friend ostream&​ operator<<​(ostream&​ str,const rekord& source);
- //operator porównania wykorzystywany przez algorytm stable_sort 
- friend bool operator<​(const rekord& a, const rekord& b); 
- //funkcja porównująca w sposób odwrotny, podawana jako argument stable_sort 
- friend bool comparator(const rekord& a, const rekord& b); 
 }; };
 rekord::​tryb rekord::​comp_mode;​ //statyczna zmienna przechowująca sposób sortowania rekord::​tryb rekord::​comp_mode;​ //statyczna zmienna przechowująca sposób sortowania
-//operator porównania wykorzystywany przez funkcję stable_sort +
-bool operator<​(const rekord& a, const rekord& b) +
-+
- switch(rekord::​comp_mode)//​wybór sortowanego pola +
-+
- case rekord::​by_imie:​ if(a.imie.compare(b.imie)<​0)return true;​ break;​ +
- case rekord::​by_nazwisko:​ if(a.nazwisko.compare(b.nazwisko)<​0)return true;​break;​ +
- case rekord::​by_tel:​ if(a.tel.compare(b.tel)<​0)return true;​ break;​ +
-+
- return false; +
-};+
 //funkcja porównująca w sposób odwrotny (zamiast operatora domyślnego) //funkcja porównująca w sposób odwrotny (zamiast operatora domyślnego)
 //podawana jako trzeci argument algorytmu stable_sort //podawana jako trzeci argument algorytmu stable_sort
Linia 134: Linia 131:
   //podamy jawnie funkcję używaną do porównania   //podamy jawnie funkcję używaną do porównania
   //aby uwidocznić działanie tej funkcji odwraca ona sposób działania   //aby uwidocznić działanie tej funkcji odwraca ona sposób działania
-  //operatora porównania (działa jak poerator ​>) co umożliwia sortowanie w porządku malejącym+  //operatora porównania (działa jak operator ​>) co umożliwia sortowanie w porządku malejącym
   //jest to rozwiązanie bardziej przejżyste niż przypisanie operatorowi < działania ​   //jest to rozwiązanie bardziej przejżyste niż przypisanie operatorowi < działania ​
   //​właściwego dla operatora >   //​właściwego dla operatora >
stable_sort.txt · ostatnio zmienione: 2008/12/10 22:26 przez vtech