Przykład sortowania tablicy struktur względem wybranego elementu z użyciem funkcji sort.
Program losuje 30 rekordów (każdy po trzy liczby - kolumny/a/b/c.
Głównym kryterium sortującym jest wartość w kolumnie a, kolejnym b (tylko w przypadku jednakowych wartości w kolumnie a), w przypadku jednakowych wartości w kolumnach a i b, sortowanie odbywa się na postawie wartości z kolumny c.
-
#include<iostream>
-
#include<algorithm>
-
#include<ctime>
-
using namespace std;
-
-
struct dane
-
{
-
int a;
-
int b;
-
int c;
-
};
-
-
bool cmp(dane,dane);
-
-
-
int main()
-
{
-
srand(time(NULL));
-
dane T[30];
-
-
for(int i=0;i<30;i++)
-
{
-
T[i].a=rand()%20+1;
-
T[i].b=rand()%20+1;
-
T[i].c=rand()%20+1;
-
}
-
-
//dane przed sortowaniem
-
cout<<"\ndane przed sortowaniem";
-
for(int i=0;i<30;i++)
-
cout<<"\nrekord "<<i<<"\t"<<T[i].a<<"\t"<<T[i].b<<"\t"<<T[i].c<<" ";
-
-
//dane posortowane wzgledem .a
-
cout<<"\n\ndane po sortowaniu kol:a";
-
sort (T,T+30,cmp) ;
-
for(int i=0;i<30;i++)
-
cout<<"\nrekord "<<i<<"\t"<<T[i].a<<"\t"<<T[i].b<<"\t"<<T[i].c<<" ";
-
-
-
}
-
-
-
bool cmp(dane A,dane B)
-
{
-
if (A.a==B.a)
-
if (A.b==B.b)
-
return A.c<B.c;
-
else
-
return A.b<B.b;
-
else
-
return A.a<B.a;
-
}
-
-
Zobacz działenie powyższego kodu w kompilatorze online >>>.