Вы должны использовать стандартную функцию сортировки C ++, std::sort
, объявленную в заголовке <algorithm>
.
Когда вы сортируете, используя пользовательскую функцию сортировки, вы должны предоставить функцию предиката , которая сообщает, является ли левое значение меньше правого значения. Поэтому, если вы хотите сначала отсортировать по имени, затем по идентификатору, а затем по сумме, все в порядке возрастания, вы можете сделать:
bool customer_sorter(Customer const& lhs, Customer const& rhs) {
if (lhs.Name != rhs.Name)
return lhs.Name < rhs.Name;
if (lhs.Id != rhs.Id)
return lhs.Id < rhs.Id;
return lhs.AmountDue < rhs.AmountDue;
}
Теперь передайте эту функцию вашему вызову sort
:
std::sort(customers.begin(), customers.end(), &customer_sorter);
Предполагается, что у вас есть контейнер STL (а не массив, как в вашем примере кода) с именем customers
, содержащий клиентов.