回绕堆数据结构中的问题

时间:2016-06-01 07:10:37

标签: c++ algorithm sorting heap

我使用堆数据结构(std::priority_queueboost::heap::binomial_heap)来使用unsigned int对项目进行排序。

struct Item { uint32_t i; };
std::priority_queue<Item> myHeap;

我将每个项目i的计数器push()提升到堆中,当我从堆中pop()时,因为我使用{进行排序{1}}(在此特定代码示例中未显示),我除了获得最低i

有没有办法很好地解决堆的问题?;

uint32_t到达i时,它将回绕到2^32。这将导致堆给我项目0而不是0之前的所有项目。

我应该使用其他分类技术吗?

1 个答案:

答案 0 :(得分:1)

您不应直接使用uint32_t甚至uint64_t

对于索引,您应该size_t等于返回类型的运算符sizeof。因此,如果您在x64平台上,它将自动适应。