Как получить элементы из boost :: fibonacci_heap по дескриптору?

Я использую boost::fibonacci_heap класс из Boost 1.53.0 для поддержки обновляемой очереди приоритетов.

Когда я хочу обновить элемент, мне нужно сравнить элемент в куче с новым элементом, которым я хочу заменить его. Я только хочу заменить элементы в куче «меньшими» версиями, поэтому я хочу сравнить их перед обновлением.

Когда я вставляю элементы я сохраняю их дескриптор (boost::fibonacci_heap::handle_type). Все функции, которые я видел в документация для fibonacci_heap которые принимают тип дескриптора, предоставляют только некоторый доступ для записи (update(), decrease(), increase() и т.д.) и не позволяйте мне проверять элемент, идентифицированный дескриптором, прежде чем я обновлю его.

Есть ли способ посмотреть на элемент в fibonacci_heap используя только его дескриптор?

3

Решение

Вы должны иметь возможность разыменовать ручку. Пример этого приведен здесь:
http://www.boost.org/doc/libs/1_50_0/doc/html/heap/concepts.html

Пример с сайта

fibonacci_heap<heap_data> heap;
heap_data f;
fibonacci_heap<heap_data>::handle_type handle = heap.push(f);
(*handle).handle = handle; // store handle in node

Так просто позвони

(*handle)

чтобы получить ссылку на ваш класс, хранящийся в куче.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]