1

マップ内の座標を表すn 個のオブジェクトのセットがあり、それらのそれぞれについて、その位置に最も近い kを持つpriority_queueを維持したいと考えています。

問題は、 priority_queueが関数オブジェクトではなく述語のクラスを受け取るため、 priority_queueごとに異なる参照ポイントを指定する方法が見つからないことです

つまり、次のようなものです:

std::priority_queue<
  Vertex*, 
  std::vector<Vertex*>, 
  DistanceComparer(fromVertex)> 
  pqueue; // doesn't compile

とは対照的に:

DistanceComparer::from = fromVertex;
std::priority_queue<
  TRVertex*, 
  std::vector<TRVertex*>, 
  DistanceComparer> 
  pqueue; // compiles but unhelpful

すべてのpriority_queueに異なるポイント参照が必要なため、静的から作成することは実際には役に立ちません

4

2 に答える 2

1

したがって、クラスをテンプレートパラメーターとして渡し、クラスのオブジェクトを引数としてコンストラクターに渡す必要があります。

std::priority_queue<
    TRVertex*, 
    std::vector<TRVertex*>, 
    DistanceComparer> 
  pqueue(DistanceComparer(fromVertex));
于 2013-04-16T16:36:33.823 に答える