Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "database.h"
- using namespace std;
- void Database::Add(const Date &dt,const string &ev){
- if(find(data[dt].begin(),data[dt].end(),ev)==data[dt].end()){
- data[dt].push_back(ev);
- }
- }
- void Database::Print(ostream &outs) const{
- for(auto &a:data){
- const Date &space = a.first;
- //sort(a.second.begin(),a.second.end());
- find_if(a.second.begin(),a.second.end(),[space,&outs](const string & str){
- outs << space.sdate << " " << str << endl;
- return false;
- });
- }
- }
- string Database::Last(const Date &dt) const{
- _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){
- return arg1.first < arg2;
- });
- if(res->first==dt){
- return res->first.sdate + " " + *res->second.rbegin();
- }
- if(res == data.begin()){
- throw invalid_argument("");
- }
- res--;
- return res->first.sdate + " " + *res->second.rbegin();
- // if(data.find(dt)!=data.end()){
- // //ostr << dt << " " << *data[dt].rbegin();
- // ostr << dt << " " << *data.at(dt).rbegin();
- // return ostr.str();
- // }
- // prev2 = prev;
- // for(const auto &i:data){
- // if(dt < (i.first) ){
- //
- // ostr << prev2.first << " "<< *prev2.second.rbegin();
- // return ostr.str();
- // }
- // prev2 = i;
- // }
- // ostr << prev2.first << " " << *prev2.second.rbegin();
- // return ostr.str();
- }
- ostream &operator <<(ostream &ostr,const pair<const Date*,const string*> &pr){
- ostr << pr.first->sdate << " " << *pr.second;
- return ostr;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement