2 Stimmen

Ist es sicher, den Operator != als Operator < in einem std::set zu verwenden?

Ich habe eine Struktur mit einigen Elementen und ich habe einen Operator== für sie implementiert. Ist es sicher, den Operator< mit Hilfe von operator== zu implementieren? Ich möchte diese Struktur in einer Menge verwenden und überprüfen, ob diese Struktur eindeutig ist.

struct Data
{
  std::string str1;
  std::string str2;
  std::string str3;
  std::string str4;

  bool operator==(const Data& rhs)
  {
    if (str1 == rhs.str1
     && str2 == rhs.str2
     && str3 == rhs.str3
     && str4 == rhs.str4
       )
      return true;
    else
      return false;
  }

  // Is this ok??
  bool operator<(const Data& rhs)
  {
    return !this->operator==(rhs);
  }
}

Wenn ich also diese Struktur in ein std::set einfüge, was passiert dann?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X