类似于Strcmp的行为应用于C++中的对象列表

0 c++ arrays string stl list

在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.

Jef*_*ett 7

bool operator<(...) {
  return std::tie(x,y,z,...) < std::tie(X,Y,Z,...);
}
Run Code Online (Sandbox Code Playgroud)