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