[ create a new paste ] login | about

Link: http://codepad.org/Un0KzONm    [ raw code | output | fork ]

C++, pasted on Nov 5:
#include <queue>

template <class T>
class Queue : protected std::queue<T>
{
public:
	using std::queue<T>::empty;
	using std::queue<T>::size;
	using std::queue<T>::front;
	using std::queue<T>::back;
	using std::queue<T>::push;
	using std::queue<T>::pop;
    
	void swap(Queue<T>& q) {using std::swap; swap(this->c, q.c);}
};

#include <stack>

template <class T>
class Stack : protected std::stack<T, std::vector<T> >
{
public:
    typedef std::size_t    size_type;
	using std::stack<T, std::vector<T> >::empty;
	using std::stack<T, std::vector<T> >::size;
	using std::stack<T, std::vector<T> >::top;
	using std::stack<T, std::vector<T> >::push;
	using std::stack<T, std::vector<T> >::pop;
    
    void reserve(size_type n) {this->c.reserve(n);}
	void swap(Stack<T>& s) {using std::swap; swap(this->c, s.c);}
};


int main()
{
	Stack<int> s;
	s.reserve(100);
	s.push(1);
    s.push(2);
    s.pop();
    printf("stack size:%d\n", s.size());
    Stack<int>().swap(s);
	printf("----- swap -----\n");
    printf("stack size:%d\n", s.size());
	
	Queue<int> q;
	
	q.push(1);
	q.push(2);
	
	printf("queue size:%d\n", q.size());
	Queue<int>().swap(q);
	printf("----- swap -----\n");
	printf("queue size:%d\n", q.size());
}


Output:
1
2
3
4
5
6
stack size:1
----- swap -----
stack size:0
queue size:2
----- swap -----
queue size:0


Create a new paste based on this one


Comments: