Advertisement
xgallom

Untitled

Jun 16th, 2020
1,258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.91 KB | None | 0 0
  1. #include <vector>
  2. #include <algorithm>
  3.  
  4. class permutations {
  5. public:
  6.     class iterator {
  7.     public:
  8.         iterator(const std::vector<int> &data, bool isDone) : m_data{data}, m_isDone{isDone} {}
  9.  
  10.         iterator &operator++()
  11.         {
  12.             m_isDone = std::next_permutation(m_data.begin(), m_data.end());
  13.  
  14.             return *this;
  15.         }
  16.  
  17.         const std::vector<int> &operator*() const
  18.         {
  19.             return m_data;
  20.         }
  21.  
  22.         bool operator==(const iterator &other) const { return m_isDone == other.m_isDone; }
  23.         bool operator!=(const iterator &other) const { return m_isDone != other.m_isDone; }
  24.  
  25.     private:
  26.         std::vector<int> m_data = {};
  27.         bool m_isDone = false;
  28.     };
  29.  
  30.     permutations(const std::vector<int> &data) : m_data{data}
  31.     {
  32.         std::sort(m_data.begin(), m_data.end());
  33.     }
  34.  
  35.     iterator begin() const { return iterator(m_data, false); }
  36.     iterator end() const { return iterator({}, true); }
  37.  
  38. private:
  39.     std::vector<int> m_data = {};
  40. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement