0

私は C++ が初めてで、STL プライオリティ キューを使用して、オブジェクトの距離プロパティに基づいてオブジェクトの最小ヒープを作成しようとしています。何をする必要があるのか​​ 完全にはわかりませんが、周りを見回したところ、優先キューは次のようになります。

std::priority_queue<Class, std::vector<Class>, object.distance> pq;

私が完全に確信していないのは、最初に比較演算子をオーバーロードしてヒープを最小ヒープに変更し、次にプロパティに基づいてオブジェクトを比較する方法です。何か助けていただければ幸いです。

4

1 に答える 1

1

コンパレーターを使用するのはヒープ操作であり、contianer ではないことに注意してください。
関数にこのプロトタイプがあると仮定すると、次のようにstd::make_heap関数static bool object::distance( Class, Class );
を使用できます。std::make_heap( pq.begin(), pq.end(), object::distance )

std::priority_queue には begin または end メソッドがなく、STL のヒープ関数に必要な RandomAcessIterators が提供されないことに注意してください。キューからヒープを作成しようとしているという事実は、コンテナーを誤用していることを示しています。priority_queue にはすでに独自の順序があります。ヒープを使用したい場合は、次のようにベクトルを使用できます。std::vector< Class > pq;

于 2013-09-30T13:09:05.090 に答える