プライオリティ キューでノードを見つけたいのですが、解決策が見つかりませんでした :( 解決策がある場合は、興味があります。
助けてくれてありがとう。
プライオリティ キューでノードを見つけたいのですが、解決策が見つかりませんでした :( 解決策がある場合は、興味があります。
助けてくれてありがとう。
本当に を検索する必要がありstd::priority_queue
、効率的に実行したい場合は、新しいクラスを派生させてfind
メンバー関数を追加できます。追加の状態を追加していないため、ポリモーフィックではないため、スライスやその他の問題について心配する必要std::priority_queue
はありません。
#include <queue>
template<
class T,
class Container = std::vector<T>,
class Compare = std::less<typename Container::value_type>
> class MyQueue : public std::priority_queue<T, Container, Compare>
{
public:
typedef typename
std::priority_queue<
T,
Container,
Compare>::container_type::const_iterator const_iterator;
const_iterator find(const T&val) const
{
auto first = this->c.cbegin();
auto last = this->c.cend();
while (first!=last) {
if (*first==val) return first;
++first;
}
return last;
}
};