Как упорядоченно пройти приоритетную очередь 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;
});
}