Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "test_runner.h"
- #include <numeric>
- #include <iostream>
- #include <vector>
- #include <string>
- using namespace std;
- template <typename Iter >
- class Page {
- private:
- Iter first , last;
- public:
- Page(Iter f, Iter l) : first(f) , last(l) { }
- Iter begin() const { return first;}
- Iter end() const {return last;}
- size_t size() {return last-first;}
- };
- // Реализуйте шаблон класса Paginator
- template <typename Iterator>
- class Paginator {
- public:
- Paginator(Iterator begin,Iterator end,size_t page_size){
- if(begin==end){
- _page_count=0;
- _pages.push_back({begin, end});
- }else{
- _page_count=0;
- size_t pagen = end - begin;
- auto begin_p = begin;
- while((end-begin_p)>pagen){
- _pages.push_back({begin_p,begin_p+4});
- begin_p+=4;
- _page_count++;
- }
- _pages.push_back({begin_p,end});
- }
- }
- size_t size() const{return _page_count;}
- auto begin() const { return _pages.begin();}
- auto end() const { return _pages.end();}
- private:
- vector<Page<Iterator>> _pages;
- size_t _page_count;
- };
- template <typename C>
- auto Paginate(C& c, size_t page_size) { return Paginator(c.begin(),c.end(), page_size);}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement