Как упорядочить записи в алфативтном порядке?

#include <iostream>
#include <string>
#include <math.h>
using namespace std;

struct Sotrudnik
{
    string surname;
string name;
    int experience;
    int age;
    char gender;
};

int main()
{
    const int n = 8;
    Sotrudnik A[n];
    int i;
    setlocale(0, "rus");
    for (i=0;i<n;i++)
    {
         cout <<"Фамилия сотрудника: "<<"\n";
        cin >> A[i].surname;

cout <<"Имя сотрудника: "<<"\n";
        cin >> A[i].name;

        cout <<"Возраст сотрудника: "<<"\n";
        cin >> A[i].age;

        cout << "Стаж сотрудника: "<<"\n";
        cin >> A[i].experience;

        cout << "Пол сотрудника: "<<"\n";
        cin >> A[i].gender;
    }

    string poisksurname;
    cout << "Введите фамилию сотрудника для поиска: ";
    cin >> poisksurname;

    bool found = false;
    for (int i = 0; i < n; ++i) {
        if (A[i].surname == poisksurname)
        {
            cout << "Информация о сотруднике:" << endl;
cout << "Фамилия сотрудника: " << A[i].surname << endl;
            cout << "Имя сотрудника: " << A[i].name << endl;
            cout << "Возраст сотрудника: " << A[i].age << endl;
            cout << "Стаж сотрудника: " << A[i].experience << endl;
            cout << "Пол сотрудника: " << ((A[i].gender=='м')? "мужской":"женский") << endl;
            found = true;
            break;
        }
    }

    if (!found) {
        cout << "Сотрудник с фамилией " << poisksurname << " не найден." << endl;
    }
    system("pause");
    return 0;
}```

Ответы (2 шт):

Автор решения: Deniska SosiSka

Используйте функцию sort, которая принимает три аргумента: указатель на начало массива, указатель на конец массива и лямбда-функцию, которая определяет критерий сортировки. В вашем случае может выглядеть так:

sort(A, A + n, [](const Sotrudnik& a, const Sotrudnik& b) {
    return a.surname < b.surname;
});

Не забудьте подключить библиотеку #include <algorithm>

→ Ссылка
Автор решения: Swift - Friday Pie

Для начала, определи процедуру сравнения для типа Sotrudnik. От того, какой версией языка можно пользоваться, реализация может варьироваться (есть оператор <=>). Можно определить и оператор:

struct Sotrudnik
{
    string surname;
    string name;
    int experience;
    int age;
    char gender;
    
    // Упорядочим сначала по фамилии, потом по имени
    // <=> из С++20.  std::tie из C++17
    auto operator<=>(const Sotrudnik& other) const {
        return std::tie(surname, name) <=> std::tie(other.surname, other.name);
    }
};

Потом берется любой понравившийся подходящий алгоритм сортировки из.. откуда угодно, только вместо, там, чисел поставляются записи, сравниваемые новой процедурой.

→ Ссылка