所謂的「函式配接器」是指可以把仿函式和另乙個仿函式(或某個值,或某個一般函式)結合起來的仿函式。
函式配接器也定義在標頭檔案< functional>中。
#include
例如:
finf_if(coll.begin() , coll.end() , //range
bind2nd(reater, 40 )) //criterion
其中的表示式:
bind2nd(reater, 40 )
結合得到乙個組合型的仿函式,檢查某個值是否大於40,實際上,bind2nd是將乙個二元仿函式轉換為乙個一元仿函式。他將第二引數傳給有第一引數二元仿函式,作為二元仿函式的第二引數。
bind1st(op , value ) //op(value , param)
bind2nd(op , value ) //op(value, param)
not1(op) //! op(param)
not2(op) //! op(param1, param2)
函式配接器也是仿函式,故可以結合仿函式形成更強大(更複雜)的表示式。
例如,下面的語句返回乙個容器裡面的第乙個偶數值函式:
pos = find_if( coll.begin(), coll.end(), //range
not1(bind2nd(modulus,2) ) ); //criterion
函式配接器
函式配接器 bind1st op,value op value,param 繫結op的第乙個引數 bind2st op,value op param,value not1 op op param not2 op op param1,param2 int func1 int p1,int p2 int...
四種函式配接器
bind1nd op value 相當於構成op value,param2 即用value覆蓋掉op的第乙個引數 bind2nd op value 相當於構成op param1,value 即用value覆蓋掉op的第二個引數2 對於接受乙個引數的仿函式op param not1 op 相當於構成 ...
容器配接器 stacks
stack 堆疊 的簡單使用 include include using namespace std int main if st st1 cout st.size endl 棧中元素的個數 cout st.top endl 返回棧頂元素 st.pop 出棧 st.top 12 改變棧頂元素值 st...