カスタム オブジェクトのベクトルを並べ替えようとすると、奇妙な問題が発生します。私はこのコードを持っています:
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
問題はどこだ?