Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- #include "date.h"
- #include "node.h"
- #include <string>
- #include <ostream>
- #include <vector>
- #include <map>
- #include <set>
- #include <memory>
- #include<algorithm>
- #include "node.h"
- #include<iterator>
- class Database {
- public:
- Database() = default;
- void Add(const Date& date, const std::string& event);
- void Print(std::ostream& is);
- template<typename pred >
- int RemoveIf(pred func) {
- auto it = std::stable_partition(begin(base_vector), end(base_vector),
- [func](const std::pair<Date, std::string>& a) {
- if (func(a.first, a.second))return false;
- else { return true; }
- });
- int t = end(base_vector) - it;
- base_vector.erase(it, end(base_vector));
- return t;
- }
- template<typename pred >
- std::vector<std::pair<Date, std::string>> FindIf(pred func) {
- std::vector<std::pair<Date, std::string>> r;
- auto it = std::remove_copy_if(begin(base_vector), end(base_vector), back_inserter(r),
- [func](const std::pair<Date, std::string>& a) {
- if (func(a.first, a.second))return false;
- else return true;
- });
- return r;
- }
- std::string Last(const Date& a);
- private:
- std::vector<std::pair<Date, std::string>> base_vector;
- std::map<Date, std::set<std::string>> base_map;
- };
- std::ostream& operator << (std::ostream& stream, const std::pair<Date, std::string>& a);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement