compact_queue.h 767 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #pragma once
  2. #include "compact_vector.h"
  3. namespace NYT {
  4. ////////////////////////////////////////////////////////////////////////////////
  5. //! A queue optimized for storing elements inline
  6. //! and with little memory overhead. See TCompactVector.
  7. template <class T, size_t N>
  8. class TCompactQueue
  9. {
  10. public:
  11. void Push(T value);
  12. T Pop();
  13. const T& Front() const;
  14. size_t Size() const;
  15. size_t Capacity() const;
  16. bool Empty() const;
  17. private:
  18. TCompactVector<T, N> Queue_ = TCompactVector<T, N>(N);
  19. size_t FrontIndex_ = 0;
  20. size_t Size_ = 0;
  21. };
  22. ////////////////////////////////////////////////////////////////////////////////
  23. } // namespace NYT
  24. #define COMPACT_QUEUE_INL_H_
  25. #include "compact_queue-inl.h"
  26. #undef COMPACT_QUEUE_INL_H_