0

2 つの std::priority_queue (PQ と呼びましょう)(基になるコンテナーとしてベクトルを持つ) が等しいかどうかを確認したいと思います。私が念頭に置いているのは、何らかの形で基礎となるベクトルにアクセスしてから、std::equal を使用することです。PQ が提供するインターフェースには、等価性をチェックする方法がありません。素朴な方法は、これら 2 つの PQ のコピーから各要素を取り出し (元の PQ を失いたくないため)、1 つずつチェックすることですが、現在の (時間) では 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 (== をオーバーロードして) かどうかを確認したい。

4

0 に答える 0