gpt4 book ai didi

c++ - 在堆数据结构中环绕问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:00:00 24 4
gpt4 key购买 nike

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

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 平台,它会自动适应。

关于c++ - 在堆数据结构中环绕问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37561753/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com