#include #include template class FixedAllocator { public: explicit FixedAllocator(std::uint64_t page_size) : p_a_(page_size), page_s_(page_size) {} Tp* Allocate() { if (v_.empty()) { Tp* temp; temp = static_cast(p_a_.Allocate()); for (size_t i = 0; i < page_s_; i++) { temp += i; v_.push_back(temp); } } auto tempp = v_.end(); Tp* aaa = v_[v_.size() - 1]; v_.erase(tempp - 1); return aaa; } void Deallocate(Tp* p) { v_.push_back(p); } const PageAllocator& InnerAllocator() const noexcept { return p_a_; } private: PageAllocator p_a_; std::vector v_; size_t page_s_; };