c++テンプレートキュー実装

1986 ワード

#include 
using std::cout;
using std::endl;
template 
class Queue
{
public:
    Queue();
    bool isFull();
    bool empty();
    void push(const int elem);
    void pop();
    T get_back();
    T get_front();

private:
    T _arr[size];
    int _front;
    int _rear;
};

template
Queue::Queue()
:_front(0)
,_rear(0){

}

template
bool Queue::empty() {
    return  _rear==_front;
}

template
bool Queue::isFull() {
    return  (_rear + 1) % size == _front;
}

template
void Queue::push(const int elem) {
    if (!isFull())
         _arr[_rear++] = elem;
    else
        cout << "      " << endl;
}
template
void Queue::pop() {
    if (!empty()) {
        ++_front;
        _front %= size;
    }
    else
        cout << "      " << endl;
}
template
T Queue::get_front() {
    return _arr[_front];
}
template
T Queue::get_back() {
    return _arr[(_rear - 1 + size) % size];
}



int main() {
    Queue queint;
    cout << "queue is empty " << queint.empty() << endl;
    queint.push(1);
    cout << "after push 1,queue is empty " << queint.empty() << endl;
    for (int i = 2; i !=11; i++)
    {
        queint.push(i);
    }
    cout << "queue is full? " << queint.isFull() << endl;
    while (!queint.empty())
    {
        cout << queint.get_front() << " ";
        queint.pop();
    }

    cout <

queue is empty 1 after push 1,queue is queue is full? 1 1 2 3 4 5 6 7 8 9 10