6template <
class Key,
class Value>
10template <
class Key,
class Value>
20 Heap2(Key sup, Key infimum,
int cap):
size(0),capacity(cap) {
22 data[0].
key = infimum;
23 data[capacity + 1].
key = sup;
39 void insert(Key k, Value v);
43 for (
int i = 1; i <=
size; i++) {
44 cout << data[i].
key <<
" ";
52template <
class Key,
class Value>
56 Key sup = getSupremum();
58 for (
int i = 1; i <= cap; i++) {
68template <
class Key,
class Value>
71{
int i, l, r, smallest;
75 data[
size].key = getSupremum();
82 if ((l <=
size) && data[l].key < data[i].key) {
87 if ((r <=
size) && data[r].key < data[smallest].key) {
90 if (smallest == i)
break;
92 data[i] = data[smallest];
93 data[smallest] = temp;
101template <
class Key,
class Value>
106 const Key sup = getSupremum();
107 Element *
const beyond = to + sz;
108 Element *
const root = data + 1;
109 while (to < beyond) {
118 Key key1 = data[succ ].
key;
119 Key key2 = data[succ + 1].key;
122 data[hole].key = key2;
123 data[hole].value = data[succ].value;
125 data[hole].key = key1;
126 data[hole].value = data[succ].value;
133 data[hole].key = sup;
139template <
class Key,
class Value>
144 Debug4(cout <<
"insert(" << k <<
", " << v <<
")" << endl);
148 while (hole > 1 && data[hole >> 1].key > k) {
149 data[hole] = data[hole >> 1];
153 data[hole].value = v;
Heap2(Key sup, Key infimum, int cap)
Value getMinValue() const
void insert(Key k, Value v)
void deleteMin(Key *key, Value *value)