Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template <typename A> class my_queue {
- private:
- A *q;
- int l, r;
- int q_size;
- public:
- my_queue(int n) {
- q = new A[2 * n];
- l = r = 0;
- q_size = 2 * n;
- }
- my_queue() {
- q = new A[maxn];
- l = r = 0;
- q_size = maxn;
- }
- ~my_queue() {
- delete[] q;
- }
- void push(A x) {
- if (r == q_size) {
- A *new_q = new A[2 * q_size];
- for (int i = 0; i < q_size; ++i)
- new_q[i] = q[i];
- delete[] q;
- q = new_q;
- q_size *= 2;
- }
- q[r++] = x;
- }
- A front() {
- return q[l];
- }
- void pop() {
- l++;
- if (l == r)
- l = r = 0;
- }
- bool empty()
- {
- return l == r;
- }
- int size() {
- return r - l;
- }
- void clear()
- {
- l = r = 0;
- }
- friend ostream &operator << (ostream &out, const my_queue<A> &q);
- };
- template <typename A>
- ostream &operator << (ostream &out, const my_queue<A> &q){
- for (int i = q.l; i < q.r; i++)
- out << q.q[i] << " ";
- return out;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement