いくつかのメンバーを持つ構造体があり、そのためにoperator==が実装されています。operator ==の助けを借りてoperator<を実装するのは安全ですか?この構造体をセットで使用したいのですが、この構造体が一意であることを確認したいと思います。
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);
}
}
したがって、この構造体をstd :: setに挿入すると、何が起こりますか?