Warum C++ STL-Container verwenden "kleiner als" - operator "< " und nicht "gleich ist gleich" operator== als Komparator?

Während der Durchführung eines Komparators Betreiber innerhalb einer benutzerdefinierten Klasse std::map kam ich über diese Frage und konnte nicht sehen, überall gefragt.

Abgesehen von der obigen Frage, ist auch daran interessiert zu wissen, in kurzen, wie operator< würde für std::map.

Ursprung der Frage:

struct Address {
  long m_IPv4Address;
  bool isTCP;
  bool operator< (const Address&) const;  //trouble
};
  • Wenn !(a < b) && !(b < a) dann (a == b).
  • wenn Sie wissen, wie zu vergleichen mit < dann alles andere erzeugt werden kann. check hier
  • Nicht unbedingt. Sie sind gleichwertig mit Bezug auf die Bestellung, aber nur gleich, wenn die definition von operator== stimmt.
  • Gut, ja. Aber das ist, was bestellt containesr verwenden, Nein?
  • Sie verwenden die Gleichwertigkeit, nicht Gleichheit. Die beiden Konzepte nicht notwendigerweise die gleiche Sache.
  • Ich bin nicht einverstanden, dass verlinkten post nicht Antworten, die Antwort die OP ' s Frage

InformationsquelleAutor iammilind | 2014-11-26
Schreibe einen Kommentar