Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Jak posortować wektor obiektów?

Ostatnio zmodyfikowano 2015-05-11 13:51
Autor Wiadomość
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.

C/C++
#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;
   
    ////////////// ZAPEŁNIANIE ////////////////
    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ę.
P-132068
pekfos
» 2015-05-10 22:29:58
C/C++
bool comp( const litera & l, const litera & r )
{
    return l.znak < r.znak;
}
//..
sort( tablica.begin(), tablica.end(), comp );
P-132069
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.
P-132077
« 1 »
  Strona 1 z 1