我想检查两个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(通过重载==)。