Как отсортировать структуру по полю?

В языке программирования C++ для сортировки структуры по полю можно использовать функцию std::sort из стандартной библиотеки. Однако перед использованием std::sort необходимо определить способ сравнения элементов структуры.

Предположим, у нас есть структура Person, содержащая поля name и age. Мы хотим отсортировать массив структур Person по возрастанию возраста.

Вот код, демонстрирующий, как использовать std::sort для этой задачи:

#include <iostream>
#include <vector>
#include <algorithm>

struct Person {
    std::string name;
    int age;
};

// Функция, определяющая порядок сортировки по возрасту
bool compareByAge(const Person& a, const Person& b)
{
    return a.age < b.age;
}

int main()
{
    std::vector<Person> people = { {"John", 25}, {"Alice", 30}, {"Bob", 20} };

    // Сортируем массив people по возрастанию возраста
    std::sort(people.begin(), people.end(), compareByAge);

    // Выводим отсортированный массив
    for (const auto& person : people) {
        std::cout << person.name << ": " << person.age << std::endl;
    }

    return 0;
}

В данном коде мы определяем функцию compareByAge, которая сравнивает два объекта типа Person по полю age. Затем мы передаем эту функцию в std::sort в качестве третьего аргумента.

В результате выполнения программы мы получим отсортированный массив структур по возрастанию возраста:

Bob: 20
John: 25
Alice: 30

Этот пример является простым и может быть модифицирован для сортировки по любому полю структуры, по-разному задавая функцию сравнения.