predicate(断言)是指给出 yes/no 的函数或者函数对象。使用函数对象的好处是可以存储变量。
predicate 通常被算法用来作用于一个元素并且给出一个判定,比如是否大于某个数。
有状态的 predicate 是指状态在运行时可能改变的 predicate。对于有状态的 predicate 来说,各个副本之间不是等价的。对于算法来说,要使用 有状态的 predicate 需要满足两个条件:
- 算法必须保证不产生 predicate 的副本。
- 算法必须对元素以确定的顺序来应用 predicate(例如,first 到 last)。
C++ 标准不要求标准算法满足以上两个条件,因此建议不要使用带状态的 predicate。
文章来源:
http://my.donews.com/robinchow/2007/01/17/okqqyqklkznuiqhlavokqgztcltuwiqlsgcq/