Проекция в алгоритмах диапазонов в C++
Проекция говорит алгоритму, по какому полю сравнивать элементы. Вместо всего объекта берут один член - например, числовой идентификатор.
Заголовки #include <ranges>, #include <vector>
и #include <string> достаточны для сортировки
записей. Запишем
структуру с полями, отсортируем по идентификатору
и выведем порядок:
struct Row {
int id;
std::string tag;
};
std::vector<Row> rows = {
{3, "c"},
{1, "a"},
{2, "b"},
};
std::ranges::sort(rows, std::ranges::less{}, &Row::id);
for (const auto& r : rows) {
std::cout << r.id << "\n";
}
Соберите вектор структур с полями score и name, отсортируйте по убыванию балла через «алгоритм ranges::sort» с проекцией на score и выведите имена в новом порядке.