1#ifndef NEFORCE_CORE_MEMORY_BOUNDED_QUEUE_HPP__
2#define NEFORCE_CORE_MEMORY_BOUNDED_QUEUE_HPP__
4NEFORCE_BEGIN_NAMESPACE__
38 NEFORCE_NODISCARD
bool full() const noexcept {
return count_ == capacity_; }
41 NEFORCE_NODISCARD
bool empty() const noexcept {
return count_ == 0; }
44 NEFORCE_NODISCARD
size_t size() const noexcept {
return count_; }
47 NEFORCE_NODISCARD
size_t capacity() const noexcept {
return capacity_; }
53 void push(T&& item)
noexcept {
54 buffer_[tail_] = _NEFORCE
move(item);
55 tail_ = (tail_ + 1) % capacity_;
63 NEFORCE_NODISCARD T
pop() noexcept {
64 T item = _NEFORCE
move(buffer_[head_]);
65 head_ = (head_ + 1) % capacity_;
74 NEFORCE_NODISCARD T&
front() noexcept {
return buffer_[head_]; }
77NEFORCE_END_NAMESPACE__
size_t size() const noexcept
bool full() const noexcept
bool empty() const noexcept
T & front() noexcept
访问队首元素
T pop() noexcept
从队首弹出元素(调用者需确保队列非空)
size_t capacity() const noexcept
bounded_queue(const size_t cap)
构造指定容量的队列
void push(T &&item) noexcept
向队尾压入元素(调用者需确保队列未满)
constexpr Iterator2 move(Iterator1 first, Iterator1 last, Iterator2 result) noexcept(noexcept(inner::__move_aux(first, last, result)))
移动范围元素