次のように、要素の構造体をセットに挿入する必要があります。
// In hpp file at private part of a class:
struct BestPair {
unsigned int p1;
unsigned int p2;
double goodness;
bool operator<(BestPair other) const // Set descendent order.
{
return goodness > other.goodness;
}
};
セットは子孫順でなければなりません。
// at the cpp file, inside a method of the same class
void Pairs::fillGlobalStack (double *** source, unsigned int sz)
{
BestPair bp;
for (unsigned int i = 0; i != sz; ++i) {
for (unsigned int j = i+1; j != sz; ++j) {
bp.p1 = i;
bp.p2 = j;
bp.goodness = (* source) [i][j];
global_stack.insert (bp); // Insert into global stack.
if (debug) {
cout << "[fillGlobalStack] i: " << i << " j: " << j << " goodness: " << bp.goodness << " global_stack.size\
() " << global_stack.size() << endl;
}
}
}
}
しかし、実行すると、コードは 3 番目、4 番目などの要素を挿入しません。これらは異なる要素であるため、私には奇妙に思えます。
// The output:
[fillGlobalStack] p1: 0 p2: 1 goodness: 0 global_stack.size() 1
[fillGlobalStack] p1: 0 p2: 2 goodness: 0.794 global_stack.size() 2
[fillGlobalStack] p1: 0 p2: 3 goodness: 0.794 global_stack.size() 2 <-- It should be 3
私は何を間違っていますか?それを解決する方法は?