从“<”运算符派生“>”运算符
Deriving the ">" operator from the "<" operator
我正在尝试仅使用 <
、||
和 !
运算符来实现 operator>()
函数。我可以使用 ==
oparator 来做到这一点,但我无法弄清楚如何仅使用三个给定的运算符来消除一个操作数等于另一个操作数的情况。以下是我在其他方面的做法:
bool operator>(a, b){
if(!(a < b) || !(a == b){
return true;
}
else{
return false;
}
}
到目前为止,我想到的唯一可行的方法是以某种方式创建递归函数。除此之外,还有其他方法可以做到吗?
a < b
当且仅当 b > a
- 正如@Kerrek 在上面所说的那样简单。
bool operator>(a, b){
if(b < a){
return true;
}
else{
return false;
}
}
编辑: 或者甚至进一步简化,感谢下面的@Mokosha
bool operator>(a, b){
return b < a;
}
除了@KerrekSB 提出的明显解决方案(这是最好的,因为它简单),出于好奇,您还可以使用 XNOR
运算符从您的代码中遵循这种方法(请注意,它不是可以仅使用 ||
运算符来完成它,因为要定义 XOR
您需要 ||
和 &&
运算符 - 更多 here):
bool operator>(a, b){
if(!(a < b) || !(x ^ y){
return true;
}
else{
return false;
}
}
我正在尝试仅使用 <
、||
和 !
运算符来实现 operator>()
函数。我可以使用 ==
oparator 来做到这一点,但我无法弄清楚如何仅使用三个给定的运算符来消除一个操作数等于另一个操作数的情况。以下是我在其他方面的做法:
bool operator>(a, b){
if(!(a < b) || !(a == b){
return true;
}
else{
return false;
}
}
到目前为止,我想到的唯一可行的方法是以某种方式创建递归函数。除此之外,还有其他方法可以做到吗?
a < b
当且仅当 b > a
- 正如@Kerrek 在上面所说的那样简单。
bool operator>(a, b){
if(b < a){
return true;
}
else{
return false;
}
}
编辑: 或者甚至进一步简化,感谢下面的@Mokosha
bool operator>(a, b){
return b < a;
}
除了@KerrekSB 提出的明显解决方案(这是最好的,因为它简单),出于好奇,您还可以使用 XNOR
运算符从您的代码中遵循这种方法(请注意,它不是可以仅使用 ||
运算符来完成它,因为要定义 XOR
您需要 ||
和 &&
运算符 - 更多 here):
bool operator>(a, b){
if(!(a < b) || !(x ^ y){
return true;
}
else{
return false;
}
}