PeriDyno 1.0.0
Loading...
Searching...
No Matches
PriorityQueue.inl
Go to the documentation of this file.
1
2namespace dyno {
3
4 template <typename T, typename Container, typename Compare>
10
11 template <typename T, typename Container, typename Compare>
15
16
17 template <typename T, typename Container, typename Compare>
19 : container(c),
20 cmp()
21 {
22 }
23
24 template <typename T, typename Container, typename Compare>
26 : container(),
27 cmp(compare)
28 {
29 }
30
31 template <typename T, typename Container, typename Compare>
33 : container(c),
34 cmp(compare)
35 {
36 }
37
38
39
40 template <typename T, typename Container, typename Compare>
42 {
43 return container.empty();
44 }
45
46
47 template <typename T, typename Container, typename Compare>
48 DYN_FUNC inline bool priority_queue<T,Container, Compare>::isEmpty() const {
49 return container.size() == 0;
50 }
51
52 template <typename T, typename Container, typename Compare>
55 {
56 return container.size();
57 }
58
59 template <typename T, typename Container, typename Compare>
61 {
62 container.clear();
63 }
64
66 template <typename T, typename Container, typename Compare>
69 {
70 return container.front();
71 }
72
74 template <typename T, typename Container, typename Compare>
76 {
77 container.push_back(value);
78 dyno::push_heap(container.begin(), container.end(), cmp);
79 }
80
82 template <typename T, typename Container, typename Compare>
84 {
86 container.pop_back();
87 }
88
89 template <typename T, typename Container, typename Compare>
90 DYN_FUNC inline void priority_queue<T, Container, Compare>::change(size_type n) // This function is not in the STL std::priority_queue.
91 {
92 dyno::change_heap(container.begin(), container.size(), n, cmp);
93 }
94
95
96 template <typename T, typename Container, typename Compare>
97 DYN_FUNC inline void priority_queue<T, Container, Compare>::remove(size_type n) // This function is not in the STL std::priority_queue.
98 {
99 assert(n < container.size() && n >= 0);
100 dyno::remove_heap(container.begin(), container.size(), n, cmp);
101 container.pop_back();
102 }
103
104 // global operators
105 template <typename T, typename Container, typename Compare>
107 {
108 return (a.container == b.container);
109 }
110
111 template <typename T, typename Container, typename Compare>
113 {
114 return (a.container < b.container);
115 }
116
117 template <typename T, typename Container, typename Compare>
119 {
120 return !(a.container == b.container);
121 }
122
123 template <typename T, typename Container, typename Compare>
125 {
126 return (b.container < a.container);
127 }
128
129 template <typename T, typename Container, typename Compare>
131 {
132 return !(b.container < a.container);
133 }
134
135 template <typename T, typename Container, typename Compare>
137 {
138 return !(a.container < b.container);
139 }
140}
assert(queueCount >=1)
Container::const_reference const_reference
DYN_FUNC bool isEmpty() const
DYN_FUNC void clear()
Container::value_type value_type
DYN_FUNC void change(size_type n)
container_type container
DYN_FUNC void pop()
DYN_FUNC const_reference top() const
Container::size_type size_type
DYN_FUNC size_type size() const
DYN_FUNC bool empty() const
DYN_FUNC void remove(size_type n)
DYN_FUNC void push(const value_type &value)
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25
DYN_FUNC bool operator<=(const priority_queue< T, Container, Compare > &a, const priority_queue< T, Container, Compare > &b)
DYN_FUNC void pop_heap(RandomAccessIterator first, RandomAccessIterator last, Compare compare)
Definition Heap.h:140
DYN_FUNC bool operator>(const priority_queue< T, Container, Compare > &a, const priority_queue< T, Container, Compare > &b)
DYN_FUNC bool operator>=(const priority_queue< T, Container, Compare > &a, const priority_queue< T, Container, Compare > &b)
DYN_FUNC void change_heap(RandomAccessIterator first, Distance heapSize, Distance position, Compare compare)
Definition Heap.h:221
DYN_FUNC bool operator<(const priority_queue< T, Container, Compare > &a, const priority_queue< T, Container, Compare > &b)
DYN_FUNC void push_heap(RandomAccessIterator first, RandomAccessIterator last, Compare compare)
Definition Heap.h:122
DYN_FUNC bool operator==(const priority_queue< T, Container, Compare > &a, const priority_queue< T, Container, Compare > &b)
DYN_FUNC bool operator!=(const priority_queue< T, Container, Compare > &a, const priority_queue< T, Container, Compare > &b)
DYN_FUNC void remove_heap(RandomAccessIterator first, Distance heapSize, Distance position, Compare compare)
Definition Heap.h:204