Newer
Older
libj / include / j / util / queue.hpp
/**
 * @file queue.hpp
 * @brief J Library Queue ヘッダファイル。
 * @copyright  2001 - 2024  Nomura Kei
 * @depends
 *   j/lang/collection.hpp
 */
#ifndef J_UTIL_QUEUE_HPP
#define J_UTIL_QUEUE_HPP

#include <j/util/collection.hpp>

namespace j
{
    namespace util
    {

        template <typename T>
        class Queue : public Collection<T>
        {
        public:
            virtual ~Queue() = default;
            virtual T &element() const = 0;
            virtual bool offer(const T &t) = 0;
            virtual T &peek() const = 0;
            virtual T poll() = 0;
            virtual T remove() = 0;
        };

    } // namespace util
} // namespace j

#endif // J_UTIL_QUEUE_HPP