chzchz

Untitled

Apr 7th, 2019
497
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.44 KB | None | 0 0
  1. #include "database.h"
  2.  
  3. void
  4. Database::Add(const Date &date, const string &event)
  5. {
  6.     auto &events = database[date];
  7.     set<string> &events_set = events.first;
  8.     vector<string> &events_vector = events.second;
  9.     if (!events_set.empty() && events_set.count(event)==0)
  10.     {
  11.         events_vector.push_back(event);
  12.         events_set.insert(event);
  13.     }
  14. }
  15.  
  16. void
  17. Database::Print(ostream &out) const
  18. {
  19.     for (auto const &date: database)
  20.     {
  21.         const vector<string> &events_vector = date.second.second;
  22.         for (auto const &event : events_vector)
  23.         {
  24.             out << date.first << ' ' << event << endl;
  25.         }
  26.     }
  27. }
  28.  
  29. string
  30. Database::Last(const Date &date) const
  31. {
  32.     ostringstream out;
  33.     auto it = database.lower_bound(date);
  34.     if (database.empty())
  35.     {
  36.         out << "No entries";
  37.     }
  38.     else if (it==end(database))
  39.     {
  40.         out << prev(it)->first << ' ' << prev(it)->second.second.back();
  41.     }
  42.     else if (it==begin(database))
  43.     {
  44.         if (database.count(date)==1)
  45.         {
  46.             out << it->first << ' ' << it->second.second.back();
  47.         }
  48.         else
  49.         {
  50.             out << "No entries";
  51.         }
  52.     }
  53.     else if (it->first==date)
  54.     {
  55.         out << it->first << ' ' << it->second.second.back();
  56.     }
  57.     else if (date < it->first)
  58.     {
  59.         out << prev(it)->first << ' ' << prev(it)->second.second.back();
  60.     }
  61.     return out.str();
  62. }
Add Comment
Please, Sign In to add comment