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
。
ここで何が起こっているのか分かりますか?