當我嘗試對自定義對象的向量進行排序時,出現了一個奇怪的問題。我有這樣的代碼:Bad Sorting a vector objects C++
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);
這個向量是結果:
BEFORE SORT:
cromosoma 0:0.205595
cromosoma 1:0.370121
cromosoma 2:0.363655
cromosoma 3:0.363655
cromosoma 4:0.858721
cromosoma 5:0.192359
cromosoma 6:0.582279
cromosoma 7:0.202899
cromosoma 8:0.205105
cromosoma 9:0.187058
AFTER SORT
cromosoma 0:-0.474942
cromosoma 1:0.187058
cromosoma 2:0.192359
cromosoma 3:0.202899
cromosoma 4:0.205105
cromosoma 5:0.205595
cromosoma 6:0.363655
cromosoma 7:0.363655
cromosoma 8:0.370121
cromosoma 9:0.582279
問題出在哪裏?
嘗試設置內存斷點。否則,代碼是不足以說明的。 –
我該怎麼做? – DrFred