11 // Egy binaris kupac, ami stringekhez rendelt double ertekeket tarol,
12 // azaz mindig az a string van a tetejen, amihez a legkisebb szam tartozik.
13 // A kupac egy string_int_map tipusu property_map segitsegevel tarolja
14 // a stringek aktualis helyet sajatmagan belul.
15 // Egy olyan stringhez, ami meg nincsen a kupac -1 -et kell rendelnunk.
16 typedef BinHeap<string, double, string_int_map> StrDoubleHeap;
18 class string_int_map : public map<string,int> {
19 typedef map<string,int> parent;
21 int get(const string &s) {
22 // Bocs, ez igy gaaaany, de nem volt kedvem utananezni, hogy
23 // hogy is mukodik ez a map :)
25 parent::operator[](s) = StrDoubleHeap::PRE_HEAP;
27 return parent::operator[](s);
29 int operator[](const string &s) {
32 void set(const string &s, int i) {
33 parent::operator[](s) = i;
43 cout << "testing string_int_map default value:\n";
44 cout << " sim.get(\"alma\"): " << sim.get("alma") << endl;
45 cout << " sim[\"alma\"]: " << sim["alma"] << endl;
47 cout << "creating the heap\n";
48 StrDoubleHeap heap(sim);
50 cout << "heap.push(\"alma\", 15);\n";
51 heap.push("alma", 15);
53 cout << "heap.set(\"korte\", 3.4);\n";
54 heap.set("korte", 3.4);
56 cout << "heap.get(\"alma\") = "
59 cout << "heap[\"alma\"] = "
63 cout << "heap.top() = "
64 << heap.top() << endl;
65 cout << "heap.topPrio() = "
66 << heap.topPrio() << endl;
68 cout << "heap.decrease(\"alma\", 1.2);\n";
69 heap.set("alma", 1.2);
71 cout << "heap.top() = "
72 << heap.top() << endl;
73 cout << "heap.topPrio() = "
74 << heap.topPrio() << endl;
76 cout << "heap.set(\"alma\", 22);\n";
79 cout << "heap.top() = "
80 << heap.top() << endl;
81 cout << "heap.topPrio() = "
82 << heap.topPrio() << endl;
84 cout << "heap.size() = "
85 << heap.size() << endl;
86 cout << "heap.pop();\n";
89 cout << "heap.top() = "
90 << heap.top() << endl;
91 cout << "heap.topPrio() = "
92 << heap.topPrio() << endl;
94 cout << "heap.state(\"szilva\") = "
95 << heap.state("szilva") << endl;
96 cout << "heap.set(\"szilva\", 0.5);\n";
97 heap.set("szilva", 0.5);
98 cout << "heap.state(\"szilva\") = "
99 << heap.state("szilva") << endl;
100 cout << "heap.top() = "
101 << heap.top() << endl;
102 cout << "heap.pop();\n";
104 cout << "heap.state(\"szilva\") = "
105 << heap.state("szilva") << endl;
107 cout << "heap.size() = "
108 << heap.size() << endl;
109 cout << "heap.pop();\n";
112 cout << "heap.size() = "
113 << heap.size() << endl;
114 cout << "heap.empty() = "
115 << (heap.empty()?"true":"false") << endl;