【发布时间】:2016-10-31 12:09:43
【问题描述】:
我在尝试将结构放入优先级队列时遇到问题,如下图所示,它没有按分数正确组织,它应该按最大的数字组织。
最少的代码:
Class foo{
public:
foo();
// this is in the .h file
struct individuo{
individuo(){}
individuo(QColor cor): gene(cor){}
QColor gene;
int score;
int probabilidade;
int epoca;
};
// this is in the .h file
struct Comparador{
bool operator()(const individuo* arg1,const individuo* arg2) const {
return arg1->score < arg2->score;
}
};
void function();
priority_queue<individuo *,vector<individuo *>, Comparador> individuos;
};
void foo::function(){
individuo *a = new individuo(QColor(r,g,b));
a->score = rand() % 255;
individuos.push(a);
}
这是它在内存中的组织方式:
可能会看到结构没有按其分数正确组织,为什么?
【问题讨论】:
-
您的示例肯定是最小的,但它远非完整,并且无法验证。请编辑您的问题并添加minimal reproducible example。
-
priority_queue不会保持容器排序。它只保证最前面的元素是最大的。 -
@SamVarshavchik 我很快修复了代码
标签: c++ struct stl priority-queue