Advertisement
chevengur

СПРИНТ № 2 | Пары и кортежи | Урок 3: Пары в компараторах 2/2

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