将问题包装在堆数据结构中



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

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

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

有没有办法用堆很好地解决环绕问题?

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

我应该使用其他排序技术吗?

你不应该直接使用uint32_t甚至uint64_t

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

最新更新