1 #ifndef __PRIORITYQUEUE__H
2 #define __PRIORITYQUEUE__H
3
4 #include <deque>
5
6 template<typename T, typename Pr = std::less<T>, typename Container = std::deque<T> >
7 class PriorityQueue
8 {
9 public:
10 bool empty() const
11 {
12 return (m_container.empty());
13 }
14
15 unsigned int size() const
16 {
17 return (m_container.size());
18 }
19
20 const T top() const
21 {
22 return m_container.front();
23 }
24
25 T top()
26 {
27 return m_container.front();
28 }
29
30 void push(const T &val)
31 {
32 Container::const_iterator iter = m_container.begin();
33 for(; iter != m_container.end(); ++iter)
34 {
35 if(!m_cmp(*iter, val))
36 {
37 break;
38 }
39 }
40 m_container.insert(iter, val);
41 }
42
43 void pop()
44 {
45 m_container.pop_front();
46 }
47
48 void remove(const T &val)
49 {
50 Container::iterator iter;
51 for(iter = m_container.begin(); iter != m_container.end(); ++iter)
52 {
53 if((*iter) == val)
54 {
55 m_container.erase(iter);
56 break;
57 }
58 }
59 }
60 private:
61 Container m_container;
62 Pr m_cmp;
63 };
64
65 #endif