C/C++

Сложности с c++

struct product
{
string name;
int category;
string date;
string date_manufacture;
int shelf_life;
int price;
int count;
};

int main(int argc[])

{
product products[] = {
{ "White bread", 1, "21.12.2022", "21.12.2022", 11, 100, 18 },
{ "wheat bread", 3, "21.12.2022", "21.12.2022", 9, 70, 118 },
{ "rye bread", 4, "21.12.2022", "21.12.2022", 16, 60, 161 },
{ "pretzel bread", 8, "21.12.2022", "21.12.2022", 18, 71, 111 },
{ " pite bread", 6, "21.12.2022", "21.12.2022", 3, 84, 121 },
{ "challah bread", 7, "21.12.2022", "21.12.2022", 21, 26, 131 },
{ "french bread", 10, "21.12.2022", "21.12.2022", 17, 34, 141 },
{ "croissant bread", 12, "21.12.2022", "21.12.2022", 1, 89, 17 },
{ "donut bread", 11, "21.12.2022", "21.12.2022", 22, 77, 9 },
{ "sweet bread", 13, "21.12.2022", "21.12.2022", 11, 44, 65 },
{ "italian bread", 14, "21.12.2022", "21.12.2022", 18, 76, 45 },
{ "russian bread", 16, "21.12.2022", "21.12.2022", 14, 82, 42 },
{ "african bread", 15, "21.12.2022", "21.12.2022", 13, 45, 93 },
{ "japan bread", 7, "21.12.2022", "21.12.2022", 17, 32, 64 },
{ "french bread", 9, "21.12.2022", "21.12.2022", 19, 99, 12 },
{ "belgian bread", 22, "21.12.2022", "21.12.2022", 19, 62, 35 },
{ "british bread", 17, "21.12.2022", "21.12.2022", 16, 53, 48 },
{ "american bread", 14, "21.12.2022", "21.12.2022", 14, 57, 27 },
{ "spanish_breath bread", 18, "21.12.2022", "21.12.2022", 12, 61, 86 },
{ "black bread", 21, "21.12.2022", "21.12.2022", 24, 34, 43 }
};

Как сделать так, чтобы записи массива структур можно было сортировать по возрастанию, выбирая поле сортировки? Например пользователь вводит 1 (или name) в консоль, что дает доступ к элементу "White bread" алгоритм считает количество букв и выводит первыми те элементы, где букв меньше, следующими идут элементы с большим содержанием букв.
 #include 
#include
using namespace std;

struct product
{
string name;
int category;
string date;
string date_manufacture;
int shelf_life;
int price;
int count;
};

int main(int argc[])

{
product products[] = {
{ "White bread", 1, "21.12.2022", "21.12.2022", 11, 100, 18 },
{ "wheat bread", 3, "21.12.2022", "21.12.2022", 9, 70, 118 },
{ "rye bread", 4, "21.12.2022", "21.12.2022", 16, 60, 161 },
{ "pretzel bread", 8, "21.12.2022", "21.12.2022", 18, 71, 111 },
{ "pite bread", 6, "21.12.2022", "21.12.2022", 3, 84, 121 },
{ "challah bread", 7, "21.12.2022", "21.12.2022", 21, 26, 131 },
{ "french bread", 10, "21.12.2022", "21.12.2022", 17, 34, 141 },
{ "croissant bread", 12, "21.12.2022", "21.12.2022", 1, 89, 17 },
{ "donut bread", 11, "21.12.2022", "21.12.2022", 22, 77, 9 },
{ "sweet bread", 13, "21.12.2022", "21.12.2022", 11, 44, 65 },
{ "italian bread", 14, "21.12.2022", "21.12.2022", 18, 76, 45 },
{ "russian bread", 16, "21.12.2022", "21.12.2022", 14, 82, 42 },
{ "african bread", 15, "21.12.2022", "21.12.2022", 13, 45, 93 },
{ "japan bread", 7, "21.12.2022", "21.12.2022", 17, 32, 64 },
{ "french bread", 9, "21.12.2022", "21.12.2022", 19, 99, 12 },
{ "belgian bread", 22, "21.12.2022", "21.12.2022", 19, 62, 35 },
{ "british bread", 17, "21.12.2022", "21.12.2022", 16, 53, 48 },
{ "american bread", 14, "21.12.2022", "21.12.2022", 14, 57, 27 },
{ "spanish_breath bread", 18, "21.12.2022", "21.12.2022", 12, 61, 86 },
{ "black bread", 21, "21.12.2022", "21.12.2022", 24, 34, 43 }
};
int sort_val = 1; //заданный вами параметр сортировки

auto sorter = [sort_val](product& l, product& r) //функция сортировки считывает из программы параметр sort_val
{
switch (sort_val) //и на основании этого параметра выбирает тот или иной способ сортировки
{
case 1: if (l.name.size() == r.name.size()) return l.name < r.name; else return
l.name.size() < r.name.size();
//если параметр = 1 то сортируется поле name по длине (или если длина равна - по алфавиту)
default: return l.count < r.count; //если другой параметр - сортировка по числу товара.
}
};
sort(products, products + sizeof(products) / sizeof(product), sorter); //функция сортировки
for (auto& i : products) cout
ГС
Ганибет Суттибаев
51 416
Лучший ответ