Advertisement
chevengur

CПРИНТ № 2 | Пары и кортежи | Кортежи. Начало 2/2

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