Jak posortować wektor obiektów?
Ostatnio zmodyfikowano 2015-05-11 13:51
Kyriet Temat założony przez niniejszego użytkownika |
Jak posortować wektor obiektów? » 2015-05-10 22:22:53 Jak posortować wektor moich własnych obiektów, przy użyciu funkcji std::sort. Wiem, że trzeba napisać funkcję porównującą, lecz nie potrafię tego zrobić w kontekście klasy. Cichutko zakładam, że gotowa funkcja napisana przez Was nauczy mnie więcej nić tysiąc słów :) Chciałbym to sortować względem ZNAKÓW. Czyli alfabetycznie. #include <iostream> #include <vector> #include <algorithm>
using namespace std;
class litera { public: char znak; bool czy_duza; int rozmiar; };
int main() { vector < litera > tablica; litera * w = new litera; w->znak = 'd'; w->czy_duza = false; w->rozmiar = 12; tablica.push_back( * w ); w->znak = 'p'; w->czy_duza = true; w->rozmiar = 14; tablica.push_back( * w ); w->znak = 'w'; w->czy_duza = true; w->rozmiar = 42; tablica.push_back( * w ); w->znak = 'g'; w->czy_duza = false; w->rozmiar = 8; tablica.push_back( * w ); sort( tablica.begin(), tablica.end(), ); return 0; } Nie potrafię napisać tej funkcji porównującej. Widziałem na jednym z angielskich for, że ktoś użył funkcji konwertującej wewnątrz klasy, ale cóż.... nie zadziałało mi to. Uczyłem się kiedyś o tym narzędziu, którym są funkcje konwertujące, ale nigdy nie miałem potrzeby tego użyć i już to zapomniałem. Z góry dziękuję. |
|
pekfos |
» 2015-05-10 22:29:58 bool comp( const litera & l, const litera & r ) { return l.znak < r.znak; }
sort( tablica.begin(), tablica.end(), comp ); |
|
Kyriet Temat założony przez niniejszego użytkownika |
» 2015-05-11 13:51:05 Już rozumiem jak pisać te funkcje dla sort(). Dziękuję pekfos. |
|
« 1 » |