delix777
Nov 8th, 2023
47
0
Never
This is comment for paste Задача 2
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. struct Animal {
  8.     string name;
  9.     int age;
  10.     double weight;
  11. };
  12.  
  13. template <typename Container, typename KeyMapper>
  14. void SortBy(Container& container, KeyMapper key_mapper, bool reverse = false) {
  15.     // теперь можно сортировать контейнер
  16.     // с компаратором key_mapper(lhs) < key_mapper(rhs)
  17.     if(reverse){
  18.         sort(container.begin(), container.end(), [key_mapper](const auto& lhs, const auto& rhs){
  19.             return key_mapper(lhs) > key_mapper(rhs);
  20.         });
  21.     }else{
  22.         sort(container.begin(), container.end(), [key_mapper](const auto& lhs, const auto& rhs){
  23.             return key_mapper(lhs) < key_mapper(rhs);
  24.         });
  25.     }
  26. }
  27.  
  28. void PrintNames(const vector<Animal>& animals) {
  29.     for (const Animal& animal : animals) {
  30.         cout << animal.name << ' ';
  31.     }
  32.     cout << endl;
  33. }
  34.  
  35. int main() {
  36.     vector<Animal> animals = {
  37.         {"Мурка"s, 10, 5},
  38.         {"Белка"s, 5, 1.5},
  39.         {"Георгий"s, 2, 4.5},
  40.         {"Рюрик"s, 12, 3.1},
  41.     };
  42.  
  43.     PrintNames(animals);
  44.  
  45.     SortBy(animals, [](const Animal& animal) {
  46.         return animal.name;
  47.     });
  48.     PrintNames(animals);
  49.  
  50.     SortBy(animals, [](const Animal& animal) {
  51.         return -animal.weight;
  52.     });
  53.     PrintNames(animals);
  54.  
  55.     return 0;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment