【发布时间】:2018-11-24 23:32:06
【问题描述】:
在 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;
}
这看起来类似于在列表 [x,y,z,...] 和 [X,Y,Z,...] 之间应用 strcmp 类型的功能。这里 x 和 y (或 y 和 z 或 X 和 Y )的类型可能不同,但对 (x,X) 和 (y,Y) 和 (z,Z) ,... 是相同的键入或为它们定义运算符 。
除了在 C++ 中有一个巨大的 if-else-if 块之外,还有什么更好的方法来实现上述功能。
@已编辑 上述方法的用例是这样的。 我有课
NextHop{
macAddr : MacAddr;
intf : Interface;
... so on
}
这里的MacAddr是一个类,它的比较运算符'
【问题讨论】:
-
欢迎来到 stackoverflow.com。请花点时间阅读the help pages,尤其是名为"What topics can I ask about here?" 和"What types of questions should I avoid asking?" 的部分。也请take the tour 和read about how to ask good questions。最后请学习如何创建Minimal, Complete, and Verifiable Example。
-
@Someprogrammerdude:这个问题似乎很有道理,可能有很好的答案,包括一些使用 C++ 宏的问题。
-
@sɐunıɔןɐqɐp 这真的不是“strcmp libe 行为”。由于我们不知道“列表”是什么,因此范围很广。也许可以通过一个简单的循环来解决,但由于我们不知道任何细节,所以无法说。
-
@Someprogrammerdude :有点像 - 这是一个字典比较。
-
@Pankaj Jangid:请您通过editing it将输入数据和预期输出添加到您的问题中吗?
标签: c++ arrays string list stl