priority_queue无效堆 - 调试断言错误

时间:2014-12-28 01:43:07

标签: c++ heap priority-queue

我遇到了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以再次对其进行排序。怎么了?

0 个答案:

没有答案