我遇到了priority_queue STL容器的巨大问题。
我用它来按参数x对对象进行排序。
用于按对象参数比较的代码。
class CompareX {
public:
bool operator() (MyClass *e1, MyClass *e2) {
return e1->get_x() > e2->get_x();
}
};
main中的priority_queue的定义:
priority_queue<MyClass*, vector<MyClass*>, CompareX > my_queue;
排序工作正常,但这里的代码我得到Debug Assertation Fault - 无效堆:
if(condidion == false)
{
double n = 200;
my_queue.top()->modifyX(clock, n); //Here I modify parameter X (it becomes bigger)
my_queue.push(my_queue.top());
my_queue.pop();
}
我的目标是将参数X修改为更大的参数,然后将对象重新插入my_queue以再次对其进行排序。怎么了?