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