0

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 から まで繰り返すbeginend、並べ替え順序は次のようになります。

  1. B

言い換えると、すべてが の特定の値を持つメンバーのグループを取得し、Bそのグループ内で のすべての値を確認しC、 の各値に対して のCすべての値を取得しますA

ここで何が起こっているのか分かりますか?

4

2 に答える 2