“纯粹”谓词我的意思是他们只依赖于他们的论点。以下函数对象是一个有效的谓词,例如std :: sort
// A predicate for sorting objects of type T2 that relies on an
// object of type T1.
class APredicate {
T1 &someObj;
APredicate(T1 &someObject) : someObj(someObject) {};
bool operator() (T2 thing1, T2 thing2) {
return someObj.someFn(thing1) < someobj.someFn(thing2);
}
}
这有效吗?一直有效吗?或者它取决于someObj.SomeFn()实际上做了什么?
答案 0 :(得分:2)
“仅取决于他们的参数”实际上意味着“如果再次使用相同的参数调用,则必须返回与之前相同的结果”。如果您({1}}的特定实例({1}}没有改变它,请注意someObj
对someObj::someFn
的特定实例返回的内容,是“纯粹”。< / p>
只要条件适用于谓词的特定实例的生命周期(STL通过值获取谓词,因此每个集合或操作都有自己的实例),它是正确的(显然它有满足特定集合或算法的任何其他要求)。
答案 1 :(得分:1)
是的,没关系。
只需确保整个操作提供排序所需的任何稳定性要求。