1

C++ 標準ライブラリのコードについて質問があります。私の質問は!(p2.lastname() < p1.lastname())、条件が姓が p1 と p2 に相当することを表していると思うので、必要ではないようです。条件を削除すると、コードは正常に動作するようです。この厳密な弱い順序付けを見ました。関連記事を読みましたが、コンセプトがよくわかりませんでした。条件が必要な理由を教えてください。

class Person {
public:
  string firstname() const;
  string lastname() const;
};

class PersonSortCriterion {
public:
  bool operator() (const Person& p1, const Person& p2) const {
    // 1) Compare the lastnames.
    // 2) If the lastnames are equivalent, compare the firstnames.
    return p1.lastname() < p2.lastname() ||
       (!(p2.lastname() < p1.lastname()) &&
          p1.firstname() < p2.firstname());
  }
};
4

1 に答える 1