Aメンバー、B、およびを含むクラスがありC、このクラスのオブジェクトを に格納するset必要があります。ABC トリプレットは一意であることがわかっており、セット キーにする必要があります。ただし、セットの順序は期待どおりにはなりません。
私の比較関数は次のとおりです。
class MyClassLess {
public:
bool operator() (const MyClass& t1, const MyClass& t2) const {
if(t1.getA() < t2.getA())
return true;
if(t1.getB() < t2.getB())
return true;
return t1.getC() < t2.getC();
}
};
typedef set<MyClass, MyClassLess> SetMyClass;
Aセット内の要素は、最初に でソートされ、次に でソートされB、最後にでソートされると予想していましたC。ただし、セットを from から まで繰り返すbeginとend、並べ替え順序は次のようになります。
- B
- ハ
- あ
言い換えると、すべてが の特定の値を持つメンバーのグループを取得し、Bそのグループ内で のすべての値を確認しC、 の各値に対して のCすべての値を取得しますA。
ここで何が起こっているのか分かりますか?