Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Сортировка вектора



В приведенной ниже программе показаны варианты вызова алгоритма sort для вектора men, содержащего объекты класса Man.

В классе Man определен предикат — операция operator<(), — благодаря которому сортировка по умолчанию будет происходить по возрастанию значений поля name.

Кроме этого, в программе определен функциональный класс Less Age, использование которого позволяет осуществить сортировку по возрастанию значений поля age.

class Man {

public:

Man (string _name, int _age):

name(_name), age(_age) { }

// предикат, задающий сортировку по умолчанию

bool operator< (const Man& m) const {

return name < m.name;

}

friend ostream& operator<< (ostream&, const Man&);

Friend struct LessAge;

private:

String name;

Int age;

};

ostream& operator<<(ostream& os, const Man& m) {

return os << endl << m.name << ",\t age: " << m.age;

}

// Функциональный класс для сравнения по возрасту

struct LessAge {

bool operator() (const Man& a, const Man& b) {

return a.age < b.age;

}

};

int main() {

Man ar [] = {

Man(“Mary Poppins", 36),

Man("Count Basie", 70),

Man{“Duke Ellington", 90).

Man("Joy Amore", 18)

};

int size = sizeof(ar) / sizeof(Man);

vector<Man> men(ar, ar + size);

/ / Сортировка по имени (по умолчанию)

Sort(men.begin(), men.end());

Print(men);

// Сортировка по возрасту

Sort(men.begin(), men.end(), LessAge());





Дата публикования: 2014-11-28; Прочитано: 338 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...