Sortowanie wektora struktur
Ostatnio zmodyfikowano 2019-01-10 13:40
Anim Temat założony przez niniejszego użytkownika |
Sortowanie wektora struktur » 2019-01-10 12:56:58 Chciałbym posortować strukturę w taki sposób, że najpierw sortuje po pierwszej wartości, a następnie sortuje po drugiej wartości, ale tylko w zakresie wartości pierwszej, czyli jak mam powiedzmy pary: (1,2); (5,7); (4,3); (1,1); (1,2); (4,2); (5,8); to po pierwszym sortowaniu chciałbym mieć (sortuję po pierwszej wartości): 5,7 5,8 4,3 4,2 1,2 1,1 1,2 a po drugim sortowaniu: 5,8 5,7 4,3 4,2 1,2 1,2 1,1 Mam taki kod, jak poniżej. Srtowanie pierwszego przypadku mam, ale nie umiem zrobić drugiego sortowania. Chyba, że można to zrobić w jednej lambdzie...: #include <iostream> #include <vector> #include <algorithm> #include <random>
using namespace std;
struct A { A( int a, int b ) : k( a ) , l( b ) { } int k; int l; };
int main() { std::random_device rd; std::uniform_int_distribution < int > dist( 0, 10 ); std::mt19937 engine( rd() ); int i, j; vector < A > wektor; for( int ww = 0; ww < 50; ++ww ) { i = static_cast < int >( dist( engine ) ); j = static_cast < int >( dist( engine ) ); wektor.push_back( A( i, j ) ); } for( auto const & value: wektor ) { std::cout << value.k << " " << value.l << std::endl; } std::cout << std::endl; std::sort( wektor.begin(), wektor.end(),[]( const A & a, const A & b )->bool { return a.k > b.k; } ); for( auto const & value: wektor ) { std::cout << value.k << " " << value.l << std::endl; } return 0; }
|
|
pekfos |
» 2019-01-10 13:06:19 |
|
Anim Temat założony przez niniejszego użytkownika |
» 2019-01-10 13:40:45 Dokładnie tego potrzebowałem :) Dziękuję. |
|
« 1 » |