#pragma once #include "Jacobstahl.hpp" #include #include #include #include template class PmergeMe { public: PmergeMe() = delete; PmergeMe(const int argc, const char **argv); PmergeMe(const PmergeMe &other); ~PmergeMe(); PmergeMe &operator=(const PmergeMe &other); void sort(); std::string getString() const; int getComparisons() const; private: Container _data; std::vector _jacobstahl_numbers; int _comparisons; bool less(int a, int b); bool areAllUnique() const; void insert(Container &main, Container &pend, int start_index, int right, int group_size); Container sort(Container &data, int level); }; template std::ostream &operator<<(std::ostream &os, const PmergeMe &obj); #include "PmergeMe.tpp"