猿问

算子<与严格弱序

算子<与严格弱序

如何定义operator<在n-tuple上(例如,在3-tuple上),以便它满足严格弱序概念?我知道Boost库具有定义正确的tuple类。operator<但出于某些原因我不能用它。



明月笑刀无情
浏览 553回答 3
3回答

人到中年有点甜

if&nbsp;(a1&nbsp;<&nbsp;b1) &nbsp;&nbsp;return&nbsp;true;if&nbsp;(b1&nbsp;<&nbsp;a1) &nbsp;&nbsp;return&nbsp;false;//&nbsp;a1==b1:&nbsp;continue&nbsp;with&nbsp;element&nbsp;2if&nbsp;(a2&nbsp;<&nbsp;b2) &nbsp;&nbsp;return&nbsp;true;if&nbsp;(b2&nbsp;<&nbsp;a2) &nbsp;&nbsp;return&nbsp;false;//&nbsp;a2&nbsp;==&nbsp;b2:&nbsp;continue&nbsp;with&nbsp;element&nbsp;3if&nbsp;(a3&nbsp;<&nbsp;b3) &nbsp;&nbsp;return&nbsp;true;return&nbsp;false;&nbsp;//&nbsp;early&nbsp;out这将元素排序为A1最显着,A3最不显着。这可以无限地继续,你也可以把它应用到T的向量上,迭代一[i]<a[i+1]/a[i+1]<a[i]的比较。算法的另一个表达式是“在相同的情况下跳过,然后进行比较”:while&nbsp;(i<count-1&nbsp;&&&nbsp;!(a[i]&nbsp;<&nbsp;a[i+1])&nbsp;&&&nbsp;!(a[i+1]&nbsp;<&nbsp;a[i]) &nbsp;&nbsp;++i;return&nbsp;i&nbsp;<&nbsp;count-1&nbsp;&&&nbsp;a[i]&nbsp;<&nbsp;a[i+1];当然,如果比较昂贵,您可能需要缓存比较结果。[编辑]删除错误代码[编辑]如果不仅仅是operator<是可用的,我倾向于使用这种模式。if&nbsp;(a1&nbsp;!=&nbsp;b1) &nbsp;&nbsp;return&nbsp;a1&nbsp;<&nbsp;b1;if&nbsp;(a2&nbsp;!=&nbsp;b2) &nbsp;&nbsp;return&nbsp;a2&nbsp;<&nbsp;b2;...

忽然笑

严格弱序这是一个数学术语,用来定义两个对象之间的关系。其定义是:如果f(x,y)和f(y,x)都是假的,则两个对象x和y是等价的。注意,对象总是(通过非自反性不变式)与自身等效。就C+而言,这意味着如果您有两个给定类型的对象,则与运算符<相比,您应该返回以下值。X&nbsp;&nbsp;&nbsp;&nbsp;a;X&nbsp;&nbsp;&nbsp;&nbsp;b;Condition:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Test:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Resulta&nbsp;is&nbsp;equivalent&nbsp;to&nbsp;b:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;a&nbsp;<&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;falsea&nbsp;is&nbsp;equivalent&nbsp;to&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;<&nbsp;a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;falsea&nbsp;is&nbsp;less&nbsp;than&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;<&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;truea&nbsp;is&nbsp;less&nbsp;than&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;<&nbsp;a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;falseb&nbsp;is&nbsp;less&nbsp;than&nbsp;a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;<&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;falseb&nbsp;is&nbsp;less&nbsp;than&nbsp;a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;<&nbsp;a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true定义等效/较少的方法完全取决于对象的类型。正式定义:严格弱序计算机科学:严格弱序与经营者的关系:比较器
随时随地看视频慕课网APP
我要回答