CPP09/ex02/inc/PmergeMe.hpp

35 lines
894 B
C++

#pragma once
#include "Jacobstahl.hpp"
#include <vector>
#include <deque>
#include <ostream>
#include <stdexcept>
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<int> _data_vector;
std::deque<int> _data_deque;
std::vector<int> _jacobstahl_numbers;
bool less(int a, int b);
int _comparisons;
bool areAllUnique() const;
void insertVector(std::vector<int> &main, std::vector<int> &pend, int start_index, int right, int group_size);
};
std::ostream &operator<<(std::ostream &os, const PmergeMe &obj);