私は2Dタイルゲームのための経路探索に取り組んでいます。私はthis similar answerを見つけましたが、私はheap compares i <> i+i
、i need manhattan(i) <> manhattan(i+1)?
のときに比較演算子を作成する方法がわかりません。私はcppで非常に錆びていますので、簡単に私に行きます。オブジェクトと静的位置のヒープ比較
typedef std::tuple<int, int> coord;
int manhattan(coord start, coord goal){
return (std::abs(start.get<0> - goal.get<0>) + \
std::abs(start.get<1> - goal.get<1>))
}
bool operator()((const coord& left, const coord& right){
return manhattan(left, ???) < manhattan(right, ???);
}
vector pathfinding(coord start, coord goal){
//using A* format
vector<coord> open;
while(open){
//how can I compare indexes to goal parameter?
std::sort_heap(open.begin(), open.end());
current = open.front();
}
}
ありがとう、それは非常に有用な説明のフォローアップでした。そのドキュメンテーションを見ていましたが、なぜ私はsort_heapを使用してプッシュ/ポップを避けることができないのですか? – Tony
現在ヒープの値のプッシュ/ポップはどうですか? – qxz
私は答えの最後の部分を編集しました – qxz