#include #ifndef ASJ_QUEUE #define ASJ_QUEUE template class Queue { private: int queue_size; std::vector elements; public: void init(int size){ elements.resize(size); std::fill(elements.begin(), elements.end(), -1); } bool empty() const { return elements.empty(); } int size() const { return elements.size(); } void push(const T& value) { pop(); elements.push_back(value); } void pop() { if (!empty()) { elements.erase(elements.begin()); } } T& front() { return elements.front(); } int counts_one() const { int count = 0; for (const T& element : elements) { if (element == 1) { count++; } } return count; } int counts_zero() const { int count = 0; for (const T& element : elements) { if (element == 0) { count++; } } return count; } int real_size() const { int count = 0; for (const T& element : elements) { if (element != -1) { count++; } } return count; } void reset() { std::fill(elements.begin(), elements.end(), -1); } }; #endif