我想检查两个 std::priority_queue (我们称之为 PQ)(它具有向量作为底层容器)是否相等。我想到的是以某种方式访问底层向量,然后使用 std::equal。PQ 提供的接口无法检查是否相等。天真的方法是从这两个 PQ 的副本中弹出每个元素(因为我不想丢失原始 PQ)并一一检查,但我的 PQ 的大小在我当前(时间敏感)应用程序,所以它是不利的。
编辑
它已被声明为:
typedef std::priority_queue<std::pair<int,int>, std::vector<std::pair<int,int> >, greater_than> PRIORITY_Q;
其中greater_than是一个处理比较的结构(它有一个函数和一些其他数据)。
我想要的是:假设我们有
PRIORITY_Q a;
PRIORITY_Q b;
然后我们用值填充队列 a 和 b。
我想检查a == b(通过重载==)。