그냥 공부하면서 queue를 구현 해 보게 되었는데
처음에는 작은 사이즈로 queue를 선언하고 크기가 커지면 동적으로 계속해서 늘리게 하려고 했으나
어디서 문제가 생겼는지는 아직 모르겠는데 계속 오류가 발생한다.
그래서 queue의 최대 용량을 정해두고 circular queue를 구현해 보게 되었다.
const int NMAX = 100005; template <typename T> struct _queue{ T* q; int _front, _rear, _size, cap; _queue():_front(0), _rear(0), _size(0), cap(NMAX){ q = new T[cap]; } ~_queue(){delete[] q;} int size(){return _size;} int full(){return _size == cap;} int empty(){return _size == 0;} void clear(){ _size = _front = _rear = 0; } void push(T e){ q[_rear] = e; _rear = (_rear + 1) % cap; if(_rear == 0) _rear == cap; _size++; } void pop(){ _front = (_front + 1) % cap; if(_front == 0) _front == cap; _size--; } T& front(){return q[_front];} T& back(){return q[_rear - 1];} };
'ComputerScience > STL' 카테고리의 다른 글
[STL] vector (0) | 2019.04.10 |
---|---|
[STL] priority_queue (0) | 2019.04.10 |
[STL] Stack (0) | 2019.04.10 |