acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
priority_queue.h
1#pragma once
2
3
4// consult cpluplus.com
5
6
7template < class TYPE, class ARG_TYPE = const TYPE &, class CONTAINER = array < TYPE, ARG_TYPE >, class FIRST = ::comparison::less < TYPE, ARG_TYPE > >
9{
10public:
11
12 inline bool is_empty() const;
13 inline ::collection::count size() const;
14
15 inline TYPE & top;
16 inline const TYPE & top const;
17
18 inline void push(const TYPE & t);
19
20 inline void pop();
21
22};
23
24
25template < class TYPE, class ARG_TYPE, class CONTAINER, class FIRST >
26inline bool priority_queue < TYPE, ARG_TYPE, CONTAINER, FIRST > ::is_empty() const
27{
28
29 return this->CONTAINER::is_empty();
30
31}
32
33template < class TYPE, class ARG_TYPE, class CONTAINER, class FIRST >
34inline ::collection::count priority_queue < TYPE, ARG_TYPE, CONTAINER, FIRST > ::size() const
35{
36
37 return this->CONTAINER::size();
38
39}
40
41
42template < class TYPE, class ARG_TYPE, class CONTAINER, class FIRST >
43inline TYPE & priority_queue < TYPE, ARG_TYPE, CONTAINER, FIRST > ::top
44{
45
46 return this->CONTAINER::front();
47
48}
49
50template < class TYPE, class ARG_TYPE, class CONTAINER, class FIRST >
51inline const TYPE & priority_queue < TYPE, ARG_TYPE, CONTAINER, FIRST > ::top const
52{
53
54 return this->CONTAINER::front();
55
56}
57
58template < class TYPE, class ARG_TYPE, class CONTAINER, class FIRST >
59inline void priority_queue < TYPE, ARG_TYPE, CONTAINER, FIRST > ::push(const TYPE & t)
60{
61
62 this->priority_queue::add(t);
63
64 ::sort::quick_sort < FIRST > ((CONTAINER *) this);
65
66}
67
68template < class TYPE, class ARG_TYPE, class CONTAINER, class FIRST >
69inline void priority_queue < TYPE, ARG_TYPE, CONTAINER, FIRST > ::pop()
70{
71
72 this->CONTAINER::pop_back();
73
74}
Definition priority_queue.h:9