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

Funkcja sort()

Ostatnio zmodyfikowano 2016-02-18 15:24
Autor Wiadomość
Anim
Temat założony przez niniejszego użytkownika
Funkcja sort()
» 2016-02-18 14:39:19
Mam takie pytanie. Załóżmy, że mam strukturę:

C/C++
struct czlowiek {
    int wzrost;
    int waga;
    int kolor_oczu; //załozmy, że kolor oczu jest w skali 0-3 (zielone, niebieskie, brązowe)
};

i dalej mam vector:

C/C++
czlowiek a, b, c;
vector < int > parametry;
for( int a = 0; a <= 100; a++ )
     parametry.push_back( czlowiek( a, b, c ) );


oraz meritum:

C/C++
sort( parametry.begin(), parametry.end() )

I tutaj moje pytanie, jak zostaną posortowane dane w kontenerze? Wedle którego kryterium ? wzrostu? wagi czy koloru oczu ? ^^
P-144982
Szadziu
» 2016-02-18 14:42:54
C/C++
vector < int > parametry;
parametry.push_back( czlowiek( a, b, c ) );

Zły typ vectora b,c jest nie ma wartości;
Zgaduje, że nie posortujesz bo nie masz operatora porównania.
P-144983
Anim
Temat założony przez niniejszego użytkownika
» 2016-02-18 14:50:28
Sam wprowadziłem w błąd co do zmiennych... Miało być :



C/C++
czlowiek a, b, c;
vector < czlowiek > parametry;
for( int i = 0; i <= 100; i++ )
     parametry.push_back( czlowiek( a, b, c ) );


Oczywiście zakładam, że a,b,c gdzieś po drodze przyjęło 100 róznych wartości (100 osób zostało scharakteryzowanych). To nie jest realny przykład. Chodzi mi tylko o sam fakt sortowania, jak ta funkcja działa, jakie ma priorytety. :)
P-144984
pekfos
» 2016-02-18 15:00:52
Program się nie skompiluje, twoja struktura nie spełnia wymagań funkcji std::sort().
P-144985
Anim
Temat założony przez niniejszego użytkownika
» 2016-02-18 15:12:10
eh. Wybaczcie, ale jak napisałem nie chodzi o realny przykład, ani nie mam takiej struktury, ani nie mam takiego przykładu (dlatego wrzucam to w ten dział, a nie w dział z problemami z kompilacją). Równie dobrze mógłbym pominąć cały wstęp i tylko spytać, jak zachowa się funkcja sort, gdy zechcę posortować dobrze (!!) przygotowaną strukturę. Pytanie wynika z mojej ciekawości. Nie miałem w życiu nigdy takiej sytuacji i nie wiem rzeczywiście, jakie warunki musiałaby spełnić moja struktura, żebym mógł użyć funkcji sort... interesuje mnie tylko, jak zachowa się ta funkcja w przypadku, gdy na każdym kolejnym miejscu mam przykładowe 3 wartości typu int (powiedzmy, że dla mnie są równo ważne), czyli tak jak powiedziałem - korzystając ze struktury...
P-144987
Rashmistrz
» 2016-02-18 15:18:07
jak zostaną posortowane dane w kontenerze?

1.Nie zostaną. Tamten kontener przechowuje typ int,
a nie człowiek, więc nie będziesz mógł umieścić danych.

2.Nie wspomniałeś nic o funkcji czlowiek().

Wedle którego kryterium ? wzrostu? wagi czy koloru oczu ? ^^
3.Według wartości... przecież to są inty...

4.Kolega wspomniał również:
Zgaduje, że nie posortujesz bo nie masz operatora porównania.


Odsyłam do:
» standard C++sort
P-144988
Monika90
» 2016-02-18 15:21:28
Żeby się dało sortować wektor struktur, to trzeba mieć operator < zdefiniowany dla tych struktur, albo przekazać kryterium sortowania (komparator) jako trzeci argument sort.
P-144990
Anim
Temat założony przez niniejszego użytkownika
» 2016-02-18 15:24:32
@Monika90 Dziękuje :) zdecydowanie o taką odpowiedź mi chodziło ^^
P-144991
« 1 »
  Strona 1 z 1