Do STL谓词需要是纯谓词
Do STL predicates need to be pure predicates?
我所说的"纯"谓词是指它们仅依赖于它们的参数。下面的函数对象是一个有效的谓词吗?例如,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()的实际作用?
"仅取决于它们的参数"实际上意味着"如果使用相同的参数再次调用,则必须返回与以前相同的结果"。如果您的(someObj
的特定实例)不改变对T2
的特定实例从someObj::someFn
返回的内容的想法,则为"纯"。
只要条件在谓词的特定实例的生存期内成立(STL通过值获取谓词,因此每个集合或操作都有自己的实例),它就是正确的(显然它必须满足特定集合或算法的任何其他要求)。
是的,没关系。
只需确保整个操作提供分拣所需的任何稳定性要求。
相关文章:
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- std::condition_variable::wait()如何评估给定的谓词
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 有没有办法将谓词中的元素偏移量传递给 std 算法?
- 在C应用程序中运行C++(带有STL)函数
- 如何在 STL 函数中找到传递给谓词的元素的索引?
- C++ STL 使用比较谓词/函子与容器
- 什么 STL 算法可以确定容器中的一个项目是否满足谓词?
- 关于 c++ stl 谓词的实现
- 从给定的STL容器中提取带有给定谓词的元素到另一个容器
- STL中使用的C++自定义比较类型(函数谓词与较少结构)
- 替换由谓词确定的 std::string 中的字符的最 stl-ish 方法是什么
- 是否允许 STL 谓词使用其参数的地址?
- 如何从传递给STL算法的谓词中获取元素的索引
- std::list指针上排序算法的STL谓词
- STL:指针关联排序容器:排序谓词模板
- STL映射和multimap中二元谓词的行为…
- STL算法的谓词
- STL从vector中移除与谓词匹配的第一个元素
- Do STL谓词需要是纯谓词