predicate(斷言)是指給出 yes/no 的函數或者函數對象。使用函數對象的好處是可以存儲變量。
predicate 通常被算法用來作用于一個元素并且給出一個判定,比如是否大于某個數。
有狀態的 predicate 是指狀態在運行時可能改變的 predicate。對于有狀態的 predicate 來說,各個副本之間不是等價的。對于算法來說,要使用 有狀態的 predicate 需要滿足兩個條件:
- 算法必須保證不產生 predicate 的副本。
- 算法必須對元素以確定的順序來應用 predicate(例如,first 到 last)。
C++ 標準不要求標準算法滿足以上兩個條件,因此建議不要使用帶狀態的 predicate。
文章來源:
http://my.donews.com/robinchow/2007/01/17/okqqyqklkznuiqhlavokqgztcltuwiqlsgcq/