1,用set模拟优先级队列:
需要注意的是:在编写Node的“<”比较函数时,必须保证它是“严格弱小于”的,因为对set进行操作的函数如insert,find,erase等都是通过这个函数进行比较的,如果对两个键值都不能 判断它们的“<”关系,则认为它们相等。
2,使用priority_queue
二者的实现不同之处是:
使用set时,由于set能保证键值的唯一,所以在进行节点的扩展时,实际上是替换set中已存在节点的len值或者添加新节点。
而使用priority_queue不能保证键值唯一,且又不方便查找已存在节点(没有迭代器适配器等操作),故在进行节点扩展时,队列中可能存在重复键值节点,单它们的len值不同,这并不影响对本问题的求解,因为可以通过约束函数将len值较大的节点进行剪枝,但是在运用priority_queue求解其它问题时,这是应当注意的。