5
私のプロジェクトでフィボナッチヒープを使用する必要があり、ブーストライブラリから使用しようとしています。しかし、私はどのように任意のデータ型のユーザー定義の比較関数を設定するかを理解することはできません。私は次のように定義された構造体のノードの最小ヒープを構築する必要があります。フィボナッチヒープの比較関数を定義します。
struct node
{
int id;
int weight;
struct node* next;
/* dist is a global array of integers */
bool operator > (struct node b) //Boost generates a Max-heap. What I need is a min-heap.
{return dist[id] < dist[b.id] ? 1:0 ;} //That's why "<" is used for "operator >".
bool operator < (struct node b)
{return dist[id] > dist[b.id] ? 1:0 ;}
bool operator >=(struct node b)
{return dist[id] <= dist[b.id] ? 1:0 ;}
bool operator <=(struct node b)
{return dist[id] >= dist[b.id] ? 1:0 ;}
node()
{
id=0;
weight=0;
next=NULL;
}
};
私は、ドキュメントを見上げると比較するクラスがありました。しかし、それはどんな要素も含んでいませんでした。ユーザー定義の比較機能の設定方法を教えてください。 ありがとうございます。 operator()
-
fibonacci_heap
その演算子を比較のために使用するかどうかを指定しましたか?つまり、「>」ではなく「<」をどうやって使うのですか?選択肢は、ヒープが最小ヒープか最大ヒープのどちらに変更されますか? – cauthon14
@ user2011038はい、変更されます。私は '>'に変更したので、これであなたは最小限のヒープを得ることができます。 – Yuushi