Как упорядоченно пройти приоритетную очередь Boost.Heap и обновить данный элемент?

ищу хорошую структуру данных, которая можетподдерживать его элементы отсортированы. В настоящее время я 'я пытаюсьBoost.Heap.

Мне часто нужно упорядоченно обходить структуру данных и при достижении элемента, основанного на каком-либо свойстве, обновлять его приоритет. Очереди приоритетов Boost.Heap предоставляют упорядоченные и неупорядоченные итераторы. Обновление элемента происходит через дескриптор узла, дескриптор может быть получен из обычного неупорядоченного итератора, но не напрямую из упорядоченного итератора, как в следующем примере:

#include 
#include 
#include 

using namespace boost::heap;

int main()
{
    fibonacci_heap fib_heap;

    fib_heap.push(1);
    fib_heap.push(2);
    fib_heap.push(3);

    for(auto i = fib_heap.ordered_begin(); i != fib_heap.ordered_end(); ++i)
    {
        // no viable conversion here
        auto h = fibonacci_heap::s_handle_from_iterator(i);

        if(*h == 2) // dumb test
        {
            fib_heap.increase(h, *h + 2);
            break;
        }
    }

    std::for_each(fib_heap.ordered_begin(), fib_heap.ordered_end(),
    [](const int &e)
    {
        std::cout < e < std::endl;
    });
}

Ответы на вопрос(2)

Ваш ответ на вопрос