Advertisement
Guest User

Untitled

a guest
Sep 27th, 2016
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.76 KB | None | 0 0
  1. template <class TData>
  2. class PatternIterator
  3. {
  4.     virtual bool hasNext() = 0;
  5.     virtual TData next() = 0;
  6.     virtual TData& operator* () = 0;
  7.  };
  8.  
  9. template <class TKey>
  10. class KHashTablePatternIterator : public PatternIterator<TKey>
  11. {
  12.     int usedElems;
  13.     int pos;
  14.     friend KHashTable <TKey>;
  15.     KHashTable <TKey> hashTable;
  16. public:
  17.     KHashTablePatternIterator(KHashTable<TKey> &obj) : pos (0), usedElems(0), hashTable(obj) {}
  18.     TKey next() {
  19.         while (!hashTable.isUsed[pos]) { pos++; }
  20.         TKey curElem = hashTable.table[pos];
  21.         pos++;
  22.         usedElems++;
  23.         return curElem;
  24.     }
  25.     TKey& operator* () {
  26.         while (!hashTable.isUsed[pos]) { pos++; }
  27.         return hashTable.table[pos];
  28.     }
  29.     bool hasNext() { if (usedElems == hashTable.nSize) return false; else return true; }
  30.  
  31. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement