diff --git a/src/shogun/lib/FibonacciHeap.cpp b/src/shogun/lib/FibonacciHeap.cpp index 938380042db..3d87f3780ee 100644 --- a/src/shogun/lib/FibonacciHeap.cpp +++ b/src/shogun/lib/FibonacciHeap.cpp @@ -149,6 +149,19 @@ void CFibonacciHeap::clear() num_trees = 0; } +int32_t CFibonacciHeap::get_key(int32_t index, float64_t &ret_key) +{ + if(index > max_num_nodes || index < 0) + return -1; + if(nodes[index]->index == -1) + return -1; + + int32_t result = nodes[index]->index; + ret_key = nodes[index]->key; + + return result; +} + void CFibonacciHeap::decrease_key(int32_t index, float64_t key) { FibonacciHeapNode* parent; diff --git a/src/shogun/lib/FibonacciHeap.h b/src/shogun/lib/FibonacciHeap.h index 1009b15a667..90d5e4769ba 100644 --- a/src/shogun/lib/FibonacciHeap.h +++ b/src/shogun/lib/FibonacciHeap.h @@ -100,6 +100,11 @@ class CFibonacciHeap: public CSGObject */ void clear(); + /** Returns key by index. + * @return -1 if not valid + */ + int32_t get_key(int32_t index, float64_t &ret_key); + /** */ void decrease_key(int32_t index, float64_t key);