Advertisement
Guest User

Untitled

a guest
Jan 20th, 2020
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.62 KB | None | 0 0
  1. const_iterator w(const size_t *a) const { return const_iterator{table, a}; }
  2.  
  3. ///////////////////////////////////////////////////////
  4. template <typename Key, size_t N>
  5. class ADS_set<Key,N>::Iterator {
  6. public:
  7. using value_type = Key;
  8. using difference_type = std::ptrdiff_t;
  9. using reference = const value_type &;
  10. using pointer = const value_type *;
  11. using iterator_category = std::forward_iterator_tag;
  12.  
  13. private:
  14. element *pos;
  15. const size_t *a;
  16. size_t n;
  17. void skip() { while (pos->mode != Mode::used && pos->mode != Mode::end) ++pos; }
  18.  
  19. public:
  20. //explicit Iterator(element *pos = nullptr): pos{pos} { if (pos) skip(); }
  21. explicit Iterator(element *pos = nullptr, const size_t *a = nullptr): pos{pos}, a{a}, n{1}{ if (pos) skip(); }
  22. reference operator*() const { return pos->key; }
  23. pointer operator->() const { return &pos->key; }
  24.  
  25. Iterator &operator++() {
  26. if (a) {
  27. if (n < *a) { ++n; return *this; }
  28. else { n = 1; ++a;}
  29. }
  30. ++pos; skip(); return *this;
  31. }
  32.  
  33. Iterator operator++(int) { auto rc {*this}; ++*this; return rc; }
  34. friend bool operator==(const Iterator &lhs, const Iterator &rhs) { return lhs.pos == rhs.pos; }
  35. friend bool operator!=(const Iterator &lhs, const Iterator &rhs) { return !(lhs == rhs); }
  36. };
  37.  
  38.  
  39.  
  40. ////////////////////////////////////////////////////// const_iterator w(const size_t *a) const 24.09.2019 ne znam ga pozvati
  41.  
  42. /* ADS_set<int, 7> h{5,1,7,3,4};
  43. h.dump();
  44. size_t a[5] = {1,2,3,1,2};
  45. auto iter = h.w(a);
  46. while (iter != h.end()) {
  47. std::cout << "iter: " << *iter << std::endl;
  48. ++iter;
  49. } */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement