Advertisement
Argentum_02

database.cpp

Apr 9th, 2019
326
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.54 KB | None | 0 0
  1. #include "database.h"
  2.  
  3. using namespace std;
  4.  
  5. void Database::Add(const Date &dt,const string &ev){
  6.     if(find(data[dt].begin(),data[dt].end(),ev)==data[dt].end()){
  7.         data[dt].push_back(ev);
  8.     }
  9. }
  10.  
  11.  
  12.  
  13. void Database::Print(ostream &outs) const{
  14.     for(auto &a:data){
  15.         const Date &space = a.first;
  16.         //sort(a.second.begin(),a.second.end());
  17.         find_if(a.second.begin(),a.second.end(),[space,&outs](const string & str){
  18.             outs << space.sdate << " " << str << endl;
  19.             return false;
  20.         });
  21.  
  22.         }
  23.     }
  24.  
  25. string Database::Last(const Date &dt) const{
  26.  
  27.     _Rb_tree_const_iterator<pair<const Date,vector<string,allocator<string>>>> res = lower_bound(data.begin(),data.end(),dt,[](const pair<Date,vector<string>> &arg1,const Date &arg2){
  28.         return arg1.first < arg2;
  29.     });
  30.     if(res->first==dt){
  31.         return res->first.sdate + " " + *res->second.rbegin();
  32.     }
  33.     if(res == data.begin()){
  34.         throw invalid_argument("");
  35.     }
  36.     res--;
  37.     return res->first.sdate + " " + *res->second.rbegin();
  38.  
  39. //  if(data.find(dt)!=data.end()){
  40. //      //ostr << dt << " " << *data[dt].rbegin();
  41. //      ostr << dt << " " << *data.at(dt).rbegin();
  42. //                  return ostr.str();
  43. //  }
  44. //  prev2 = prev;
  45. //  for(const auto &i:data){
  46. //      if(dt < (i.first) ){
  47. //
  48. //          ostr << prev2.first << " "<< *prev2.second.rbegin();
  49. //          return ostr.str();
  50. //      }
  51. //      prev2 = i;
  52. //  }
  53. //  ostr << prev2.first << " " << *prev2.second.rbegin();
  54. //  return ostr.str();
  55. }
  56.  
  57. ostream &operator <<(ostream &ostr,const pair<const Date*,const string*> &pr){
  58.     ostr << pr.first->sdate << " " << *pr.second;
  59.     return ostr;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement