Advertisement
Guest User

Database.h

a guest
Dec 16th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.32 KB | None | 0 0
  1. #pragma once
  2. #include "date.h"
  3. #include "node.h"
  4. #include <string>
  5. #include <ostream>
  6. #include <vector>
  7. #include <map>
  8. #include <set>
  9. #include <memory>
  10. #include<algorithm>
  11. #include "node.h"
  12. #include<iterator>
  13.  
  14. class Database {
  15. public:
  16.     Database() = default;
  17.     void Add(const Date& date, const std::string& event);
  18.     void Print(std::ostream& is);
  19.  
  20.     template<typename pred >
  21.     int RemoveIf(pred func) {
  22.  
  23.         auto it = std::stable_partition(begin(base_vector), end(base_vector),
  24.             [func](const std::pair<Date, std::string>& a) {
  25.                 if (func(a.first, a.second))return false;
  26.                 else { return true; }
  27.             });
  28.         int t = end(base_vector) - it;
  29.         base_vector.erase(it, end(base_vector));
  30.         return t;
  31.     }
  32.     template<typename pred >
  33.     std::vector<std::pair<Date, std::string>> FindIf(pred func) {
  34.         std::vector<std::pair<Date, std::string>> r;
  35.         auto it = std::remove_copy_if(begin(base_vector), end(base_vector), back_inserter(r),
  36.             [func](const std::pair<Date, std::string>& a) {
  37.                 if (func(a.first, a.second))return false;
  38.                 else return true;
  39.             });
  40.         return r;
  41.     }
  42.     std::string Last(const Date& a);
  43. private:
  44.  
  45.     std::vector<std::pair<Date, std::string>> base_vector;
  46.     std::map<Date, std::set<std::string>> base_map;
  47. };
  48. std::ostream& operator << (std::ostream& stream, const std::pair<Date, std::string>& a);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement