0

私は C++ で A* パスファインディング アルゴリズムに取り組んでいます。私は以下の簡単なコードを持っています.Fが最も低いオブジェクトを見つける必要があります.ベクトルを繰り返して手動で比較することでこれを行う方法を知っていますが、より少ないコードを要求する他の簡単な方法があると思います. 回答ありがとうございます

struct Node
{
    int f;
};

void func()
{
    std::vector<Node> nodes;
    //fill nodes with some objects
    //now find Node object with smallest F
}
4

3 に答える 3

2

std::min_elementと lambda コンパレーターは最も簡潔なようです。ところで、単純なベクトルを使用すると、A* などの高速検索アルゴリズムを使用する目的が損なわれるようです。開発中は問題ありませんが、最終バージョンでは、ヒープベースのstd::priority_queueなどの高速優先キューを使用する必要があります。

于 2013-08-30T15:37:16.287 に答える
0

temp int 変数を保持することができ、この変数に vector の最小値インデックスを記録します。新しい値をベクトルにプッシュするたびに、一時インデックスを持つベクトル値と比較して、新しい最小値インデックスを記録できます。

于 2013-08-30T15:40:29.057 に答える