#pragma once #include "Jacobstahl.hpp" #include #include #include #include class PmergeMe { public: PmergeMe() = delete; PmergeMe(const int argc, const char **argv); PmergeMe(const PmergeMe &other); ~PmergeMe(); PmergeMe &operator=(const PmergeMe &other); std::ostream &operator<<(std::ostream &os) const; void sort(); void sortVector(int level); std::string getPrintableVector() const; std::string getPrintableDeque() const; private: std::vector _data_vector; std::deque _data_deque; std::vector _jacobstahl_numbers; bool areAllUnique() const; void insertVector(std::vector &main, std::vector &pend, int start_index, int right, int group_size); }; std::ostream &operator<<(std::ostream &os, const PmergeMe &obj);