#include #include #include #include struct Person { std::string name; int born; int died; }; struct Person2 { std::string name; int age; Person2(Person p = {}) : name(p.name) , age(p.died-p.born) { } }; int main() { auto persons = std::vector { { "Galilei", 1564, 1642 }, { "Newton" , 1642, 1726 }, { "Hawking", 1942, 2018 }, }; for (auto [name, born, died] : persons) { std::cout << name << '\t' << born << '-' << died << '\n'; } std::cout << "-----------------\n"; auto persons2 = std::vector(2); std::ranges::partial_sort_copy(persons, persons2, {}, &Person::name, &Person2::name); for (auto [name, age] : persons2) { std::cout << name << '\t' << age << '\n'; } } /* Galilei 1564-1642 Newton 1642-1726 Hawking 1942-2018 ----------------- Galilei 78 Hawking 76 */