prizrak567890

Тема 3. Пары и кортежи / Урок 4. Кортежи. Начало / Задача 1,2 / Спринт 2

Oct 24th, 2023 (edited)
1,572
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.15 KB | None | 0 0
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <tuple>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8. enum class Status {
  9.     ACTUAL,
  10.     EXPIRED,
  11.     DELETED
  12. };
  13.  
  14. struct Document {
  15.     int id;
  16.     Status status;
  17.     double relevance;
  18.     int rating;
  19.    
  20.     auto MakeKey() const {
  21.         return tuple(status, -rating, -relevance);
  22.     }
  23. };
  24.  
  25. void SortDocuments(vector<Document>& matched_documents) {            
  26.     sort(matched_documents.begin(), matched_documents.end(),
  27.          [](const Document& lhs, const Document& rhs) {
  28.              return lhs.MakeKey() < rhs.MakeKey();
  29.          });
  30. }
  31.  
  32. int main() {
  33.     vector<Document> documents = {
  34.         {100, Status::ACTUAL,  0.5, 4},
  35.         {101, Status::EXPIRED, 0.5, 4},
  36.         {102, Status::ACTUAL,  1.2, 4},
  37.         {103, Status::DELETED, 1.2, 4},
  38.         {104, Status::ACTUAL,  0.3, 5},
  39.     };
  40.     SortDocuments(documents);
  41.     for (const Document& document : documents) {
  42.         cout << document.id << ' '
  43.              << static_cast<int>(document.status) << ' '
  44.              << document.relevance << ' '
  45.              << document.rating << endl;
  46.     }
  47.  
  48.     return 0;
  49. }
  50.  
Advertisement
Add Comment
Please, Sign In to add comment