私はオブジェクトを持っています
priority_queue<SState,vector<SState>,greater<SState> > m_queue;
これは、SState が定義された内部構造体であるクラスのメンバーです。
struct SState
{
SState(int p, int b):priority(p),bbb(b){}
~SState(){}
int priority;
int bbb;
};
そしてコンパレーター
inline bool operator > (const MyClass::SState& left, const MyClass::SState& right)
{
return left.priority > right.priority;
}
SState オブジェクトを作成するメソッドがあります。
m_queue.push(SState(p,b));
そして他の方法で
if (!m_queue.empty())
{
const SState& state = m_queue.top();
...
m_queue.pop();
}
ヒープが破損しました。それを正しく行う方法は?