#ifndef Pool_h #define Pool_h #include #include namespace quickhull { template class Pool { std::vector> m_data; public: void clear() { m_data.clear(); } void reclaim(std::unique_ptr& ptr) { m_data.push_back(std::move(ptr)); } std::unique_ptr get() { if (m_data.size()==0) { return std::unique_ptr(new T()); } auto it = m_data.end()-1; std::unique_ptr r = std::move(*it); m_data.erase(it); return r; } }; } #endif /* Pool_h */