// © Copyright 1997. Joseph Bergin. All rights reserved.#ifndef ITER_STACK_H#define ITER_STACK_H#include <stl.h>// Adds iterators and const iterators to the standard// container adaptors.  template <class Container>class iter_stack:public stack<Container>{public:	typedef Container::iterator reverse_iterator;	typedef Container::const_iterator const_reverse_iterator;	typedef Container::reverse_iterator iterator;	typedef Container::const_reverse_iterator const_iterator;	// Note: Iteration is from the top of the stack.		iterator begin(){return c.rbegin();}	iterator end(){return c.rend();}	const_iterator begin()const{return c.rbegin();}	const_iterator end()const{return c.rend();}    reverse_iterator rbegin() {return c.begin();}        const_reverse_iterator rbegin() const {return c.begin();}    reverse_iterator rend() {return c.end();}        const_reverse_iterator rend() const {return c.end();}};template <class Container>class iter_queue:public queue<Container>{public:	typedef Container::iterator iterator;	typedef Container::const_iterator const_iterator;	typedef Container::reverse_iterator reverse_iterator;	typedef Container::const_reverse_iterator const_reverse_iterator;	// Iteration is from front to back.		iterator begin(){return c.begin();}	iterator end(){return c.end();}	const_iterator begin()const{return c.begin();}	const_iterator end()const{return c.end();}    reverse_iterator rbegin() {return c.rbegin();}        const_reverse_iterator rbegin() const {return c.rbegin();}    reverse_iterator rend() {return c.rend();}        const_reverse_iterator rend() const {return c.rend();}};template <class Container, class Compare>class iter_priority_queue:public priority_queue<Container, Compare>{public:	typedef Container::iterator iterator;	typedef Container::const_iterator const_iterator;	typedef Container::reverse_iterator reverse_iterator;	typedef Container::const_reverse_iterator const_reverse_iterator;	// Iteration is in priority order.		iterator begin(){return c.begin();}	iterator end(){return c.end();}	const_iterator begin()const{return c.begin();}	const_iterator end()const{return c.end();}    reverse_iterator rbegin() {return c.rbegin();}        const_reverse_iterator rbegin() const {return c.rbegin();}    reverse_iterator rend() {return c.rend();}        const_reverse_iterator rend() const {return c.rend();}};#endif