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ę: struct czlowiek { int wzrost; int waga; int kolor_oczu; };
i dalej mam vector: czlowiek a, b, c; vector < int > parametry; for( int a = 0; a <= 100; a++ ) parametry.push_back( czlowiek( a, b, c ) );
oraz meritum: sort( parametry.begin(), parametry.end() )
I tutaj moje pytanie, jak zostaną posortowane dane w kontenerze? Wedle którego kryterium ? wzrostu? wagi czy koloru oczu ? ^^ |
|
Szadziu |
» 2016-02-18 14:42:54 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. |
|
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ć : 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. :) |
|
pekfos |
» 2016-02-18 15:00:52 Program się nie skompiluje, twoja struktura nie spełnia wymagań funkcji std::sort(). |
|
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... |
|
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: sort |
|
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. |
|
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 ^^ |
|
« 1 » |