Определите operator<
для вашей структуры, чтобы обеспечить отношение порядка между Customer
экземплярами:
struct Customer {
...
friend bool operator<(const Customer& a, const Customer& b) {
return a.id < b.id;
}
};
Используйте эту таблицу (в частности, блок-схему внизу), чтобы решить, какой контейнер следует использовать в вашей конкретной программе. Если это std::set
, ваша сортировка выполняется всякий раз, когда вы вставляете Customer
в set
. Если это std::list
, вызовите функцию-член sort()
из списка:
std::list<Customer> customers;
customers.push_back(Customer(...));
...
customers.sort();
Если это std::vector
или std::deque
, используйте std::sort()
из заголовка <algorithm>
:
std::vector<Customer> customers;
customers.push_back(Customer(...));
...
std::sort(customers.begin(), customers.end());
Если вам нужно выполнить сортировку несколькими способами, определите функцию сортировки для каждого заказа:
struct Customer {
...
static bool sort_by_name(const Customer& a, const Customer& b) {
return a.name < b.name;
}
};
Затем скажите std::list::sort()
или std::sort()
, чтобы использовать этот компаратор:
customers.sort(Customer::sort_by_name);
std::sort(customers.begin(), customers.end(), Customer::sort_by_name);