在cpp中,我想知道是否有更好的方法来执行以下操作:
bool operator<(...) {
if( x < X )
return true;
else if ( x > X )
return false;
else if ( y < Y )
return true;
else if ( y > Y )
return false;
else if ( z < Z )
return true;
else if ( z > Z )
return false;
.... so on
else
return false;
}
Run Code Online (Sandbox Code Playgroud)
这看起来类似于在列表[x,y,z,...]和[X,Y,Z,...]之间应用strcmp类型的功能.这里x和y的类型(或y和z或X和Y)可能不相同,但是对(x,X)和(y,Y)和(z,Z),...是相同的输入或为其定义运算符<和>.
有没有更好的方法来实现上述功能,除了在C++中有一个巨大的if-else-if块.
@Edited用于上述方法的用例就是这样的.我上课了
NextHop{
macAddr : MacAddr;
intf : Interface;
... so on
}
Run Code Online (Sandbox Code Playgroud)
这里MacAddr是一个类,它的比较运算符'<'只是比较字符串,而接口是一个类,它比较两个整数值.现在我想实现一个运算符<for NextHop.
bool operator<(...) {
return std::tie(x,y,z,...) < std::tie(X,Y,Z,...);
}
Run Code Online (Sandbox Code Playgroud)