dalfab | En C++, c'est plus concis, le tri se fait en une seule ligne.
Code :
- #include <algorithm>
- #include <iostream>
- struct start_end_time_t {
- unsigned int start;
- unsigned int end;
- };
- int main() {
- start_end_time_t start_end_times[3]{{600,653},{432,456},{512,536}};
- std::sort( start_end_times.begin(), start_end_times.end(), [](auto&d,auto&e){return d.start<e.start;} );
- }
|
On devrait préférer std::array et depuis le C++20, on peut utiliser les ranges et/ou l'operateur<=>, c'est plus concis
Code :
- import std;
- struct start_end_time_t {
- unsigned int start;
- unsigned int end;
- friend auto operator<=>(start_end_time_t,start_end_time_t) = default; // ordonnable sur 1er champ sinon second
- };
- int main() {
- std::array start_end_times{start_end_time_t{600,653},start_end_time_t{432,456},start_end_time_t{512,536}};
- std::ranges::sort( start_end_times );
- }
|
Message édité par dalfab le 01-09-2024 à 14:12:13
|