我知道这可能是那种“你必须尝试一下”的问题,但由于我目前没有可用的实际测试数据,因此在设计代码时,我希望获得您的经验反馈。
我有一个数据结构,它实现了一个带有一些附加函数的优先队列。我通常需要做的就是一次添加一堆对象到这个堆中。我正在使用 std::make_heap()
、std::push_heap()
和 std::pop_heap()
算法来维护堆不变量。
现在,每当我进行插入操作时,我使用 std::push_heap()
来添加单个元素。现在,我正在考虑一次性添加所有元素,使用 std::vector::push_back()
方法,然后重新组织堆。此时简单的 push_heap()
可能不起作用,所以我将不得不使用新的 make_heap()
。然而,make_heap()
的运行时间为 (3*(last-first))
,而 push_heap()
仅需要 log(last-first)
。
在这种情况下,是否有一种简单的方法来确定哪个实际上更快,还是说我必须等待测试数据出现?