#include
<algorithm>
Ran partial_sort_copy (In first, In last, Ran result_first, Ran result_last) Ran partial_sort_copy (In first, In last, Ran result_first, Ran result_last, Binary comp) Ran partial_sort_copy (Exec pol, In first, In last, Ran result_first, Ran result_last) Ran partial_sort_copy (Exec pol, In first, In last, Ran result_first, Ran result_last, Binary comp) [last,res] = partial_sort_copy (Range1 r1, Range2 result, Binary comp = {}, Proj1 proj1 = {}, Proj2 proj2 = {}) [last,res] = partial_sort_copy (In first, In last, Ran result_first, Ran result_last, Binary comp = {}, Proj1 proj1 = {}, Proj2 proj2 = {})
Kopiert die kleinsten Elemente des Bereiches [first,last) aufsteigend geordnet in den Bereich [result_first,result_last).
first | Anfang des Bereiches |
last | Ende des Bereiches |
result_first | Anfang des Zielbereiches |
result_last | Ende des Zielbereiches |
comp | Vergleichskriterium (Vorgabe = less ) |
proj1 , proj2 | einstellige Funktoren (Vorgabe = std::identity ) |
pol | parallele Ausführungsart |
Rückgabewert: result_first+N
bzw. {last,result_first+N}
als Struktur mit Elementen namens in, out
mit N = min(last-first, result_last-result_first)
.
#include <algorithm> #include <iostream> #include <string> #include <vector> 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<Person> { { "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<Person2>(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 */