C/C++
Программирование, структуры, списки
Можно ли создать структуру и передать полученные значения (имя пол возраст и тп.) в список, где их отсортировать и вывести?
#include <algorithm>
#include <iostream>
#include <array>
using namespace std;
struct Any {
int x;
int y;
Any() : x(0), y(0) {}
Any(int x, int y) : x(x), y(y) {}
friend bool operator<(const Any& a, const Any& b) {
if (a.x < b.x) return true;
if (a.x == b.x && a.y < b.y) return true;
return false;
}
friend bool operator>(const Any& a, const Any& b) {
if (a.x > b.x) return true;
if (a.x == b.x && a.y > b.y) return true;
return false;
}
friend ostream& operator<<(ostream& out, const Any& any) {
return out << any.x << ' ' << any.y;
}
};
void show(const array<Any, 5> box) {
for (const auto& x : box) cout << x << '\n';
puts("");
}
int main() {
array<Any, 5> box{
Any{ 5, 3 },
Any{ 8, 2 },
Any{ 5, 4 },
Any{ 1, 9 },
Any{ 8, 1 }
};
show(box);
sort(box.begin(), box.end());
show(box);
sort(box.begin(), box.end(), greater<Any>());
show(box);
auto less_second = [](const Any& a, const Any& b) { return a.y < b.y; };
sort(box.begin(), box.end(), less_second);
show(box);
auto greater_second = [](const Any& a, const Any& b) { return a.y > b.y; };
sort(box.begin(), box.end(), greater_second);
show(box);
}
Результаты вывода
До сортировки
5 3
8 2
5 4
1 9
8 1
Сортировка по первому значению с применением встроенного оператора «меньше»
1 9
5 3
5 4
8 1
8 2
Сортировка по первому значению с применением встроенного оператора «больше»
8 2
8 1
5 4
5 3
1 9
Сортировка по второму значению с применением лямбда-фукции по возрастанию
8 1
8 2
5 3
5 4
1 9
Сортировка по второму значению с применением лямбда-фукции по убыванию
1 9
5 4
5 3
8 2
8 1
#include <iostream>
#include <array>
using namespace std;
struct Any {
int x;
int y;
Any() : x(0), y(0) {}
Any(int x, int y) : x(x), y(y) {}
friend bool operator<(const Any& a, const Any& b) {
if (a.x < b.x) return true;
if (a.x == b.x && a.y < b.y) return true;
return false;
}
friend bool operator>(const Any& a, const Any& b) {
if (a.x > b.x) return true;
if (a.x == b.x && a.y > b.y) return true;
return false;
}
friend ostream& operator<<(ostream& out, const Any& any) {
return out << any.x << ' ' << any.y;
}
};
void show(const array<Any, 5> box) {
for (const auto& x : box) cout << x << '\n';
puts("");
}
int main() {
array<Any, 5> box{
Any{ 5, 3 },
Any{ 8, 2 },
Any{ 5, 4 },
Any{ 1, 9 },
Any{ 8, 1 }
};
show(box);
sort(box.begin(), box.end());
show(box);
sort(box.begin(), box.end(), greater<Any>());
show(box);
auto less_second = [](const Any& a, const Any& b) { return a.y < b.y; };
sort(box.begin(), box.end(), less_second);
show(box);
auto greater_second = [](const Any& a, const Any& b) { return a.y > b.y; };
sort(box.begin(), box.end(), greater_second);
show(box);
}
Результаты вывода
До сортировки
5 3
8 2
5 4
1 9
8 1
Сортировка по первому значению с применением встроенного оператора «меньше»
1 9
5 3
5 4
8 1
8 2
Сортировка по первому значению с применением встроенного оператора «больше»
8 2
8 1
5 4
5 3
1 9
Сортировка по второму значению с применением лямбда-фукции по возрастанию
8 1
8 2
5 3
5 4
1 9
Сортировка по второму значению с применением лямбда-фукции по убыванию
1 9
5 4
5 3
8 2
8 1
Витя Михеев
вы просто золотце! :)
Похожие вопросы
- Основы программирования. Решение задач. Обработка структур. Программа.
- Программирование c++ программирование и работа со структурами
- Помогите по программированию!!! с++ используя структуры
- Создать структуры в с++
- [C++] Помогите написать задачу на структуры!
- Программа на c++ не работает. Написать структуру и прочее. Подскажите, пожалуйста, что я делаю не так.
- Вложенные структуры. С++
- Создать структуру для описания членов вашей семьи
- Программирование на С++
- Программирование на C++