当我尝试对自定义对象的向量进行排序时,我遇到了一个奇怪的问题。我有这个代码:
class Chromosome {
public:
Chromosome(int c_w);
void setFitness(double fit);
double getFitness() const;
};
和比较功能:
bool compareChromosomes(const Chromosome* l, const Chromosome* r) {
return l->getFitness() <= r->getFitness();
}
我创建了染色体的向量:vector<Chromosome*> popv;
并添加了一些染色体。
当我尝试用sort(popv.begin(), popv.end(), compareChromosomes);
这是结果:
排序前:
染色体0:0.205595
染色体1:0.370121
染色体2:0.363655
染色体3:0.363655
染色体4:0.858721
染色体 5:0.192359
染色体6:0.582279
染色体7:0.202899
染色体 8:0.205105
染色体9:0.187058
排序后
染色体0:-0.474942
染色体1:0.187058
染色体2:0.192359
染色体3:0.202899
染色体4:0.205105
染色体5:0.205595
染色体6:0.363655
染色体7:0.363655
染色体 8:0.370121
染色体9:0.582279
问题出在哪里?