1

ヒープ (配列を使用) を使用しているプラ​​イオリティ キューを作成したいです。プライオリティ キューはジェネリックであるため、クライアントがコンストラクターを介して比較関数を渡して 2 つの型を比較す​​る限り、すべてのデータ型を受け入れます。

比較関数をパラメーターとして受け入れるコンストラクターを作成するにはどうすればよいですか? さらに、チェック時に比較関数を呼び出すにはどうすればよいですか

return (Type a==Type b)

例えば。

struct node{
   string val1;
   string val2;
   vector<node *> connectedNodes;
};

int compareNode(node a,node b){
 //describe the compare
}

int main(){
PQueue<node> q(compareNode);
}

PQueue クラスは配列として実装されます。追加、バブリング、ヒープ化では 2 つの ValType を比較する必要があるため、compareNode を使用して比較する必要があります。

4

2 に答える 2

0

これを行う必要はありません。配列を使用しないでください。C++ の STL ライブラリの組み込みの優先度キューを使用してください。変更可能な独自の比較機能があります。

参考:http ://www.cplusplus.com/reference/queue/priority_queue/

トップコーダーのチュートリアル (アルゴリズムの使用法) も参照できます。

于 2013-07-07T13:52:31.157 に答える