#pragma once #include "Jacobstahl.hpp" #include #include template class PmergeMe { public: PmergeMe() = delete; PmergeMe(const int argc, const char **argv); PmergeMe(const PmergeMe &other); PmergeMe(PmergeMe &&other) noexcept; ~PmergeMe(); PmergeMe &operator=(const PmergeMe &other); PmergeMe &operator=(PmergeMe &&other) noexcept; void sort(); std::string getString() const; int getComparisons() const; long long getTimeUs() const; private: Container _data; int _comparisons; long long _time_us; 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"