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