85 C 函式物件介面卡

2021-09-28 10:58:44 字數 2670 閱讀 4280

函式介面卡bind1st bind2nd

現在我有這個需求 在遍歷容器的時候,我希望將容器中的值全部加上100之後顯示出來,怎麼做?

我們直接給函式物件繫結引數 編譯階段就會報錯

for_each

(v.begin()

, v.

end(),

bind2nd

(myprint()

,100))

;

如果我們想使用繫結介面卡,需要我們自己的函式物件繼承binary_function 或者 unary_function

根據我們函式物件是一元函式物件 還是二元函式物件

//函式介面卡bind1st bind2nd

//現在我有這個需求 在遍歷容器的時候,我希望將容器中的值全部加上100之後顯示出來,怎麼做?

//我們直接給函式物件繫結引數 編譯階段就會報錯

//for_each(v.begin(), v.end(), bind2nd(myprint(),100));

//如果我們想使用繫結介面卡,需要我們自己的函式物件繼承binary_function 或者 unary_function

//根據我們函式物件是一元函式物件 還是二元函式物件

class

myprint

:public binary_function<

int,

int,

void

>};

//1、函式介面卡

void

test01()

cout <<

"請輸入起始值:"

<< endl;

int x;

cin >> x;

for_each

(v.begin()

, v.

end(),

bind1st

(myprint()

, x));

//for_each(v.begin(), v.end(), bind2nd( myprint(),x ));

}//總結: bind1st和bind2nd區別?

//bind1st : 將引數繫結為函式物件的第乙個引數

//bind2nd : 將引數繫結為函式物件的第二個引數

//bind1st bind2nd將二元函式物件轉為一元函式物件

class

greaterthenfive

:public unary_function<

int,

bool

>};

//2、取反介面卡

void

test02()

// vector::iterator it = find_if(v.begin(), v.end(), greaterthenfive()); //返回第乙個大於5的迭代器

// vector::iterator it = find_if(v.begin(), v.end(), not1(greaterthenfive())); //返回第乙個小於5迭代器

//自定義輸入

vector<

int>

::iterator it =

find_if

(v.begin()

, v.

end(

), not1 (

bind2nd

(greater<

int>()

,5))

);if(it == v.

end())

else

//排序 二元函式物件

sort

(v.begin()

, v.

end(),

not2

(less<

int>()

));for_each

(v.begin()

, v.

end(),

(int val));

}//not1 對一元函式物件取反

//not2 對二元函式物件取反

void

myprint03

(int v,

int v2)

//3、函式指標介面卡 ptr_fun

void

test03()

// ptr_fun( )把乙個普通的函式指標適配成函式物件

for_each

(v.begin()

, v.

end(),

bind2nd

(ptr_fun

( myprint03 )

,100))

;}//4、成員函式介面卡

class

person

//列印函式

void

showperson()

void

plus100()

public

: string m_name;

int m_age;};

void

myprint04

(person &p)

;void

test04()

void

test05()

//如果容器存放的是物件指標, 那麼用mem_fun

//如果容器中存放的是物件實體,那麼用mem_fun_ref

函式物件介面卡

include include include include include include include using namespace std 函式物件介面卡bind1st,bind2nd struct myprint public binary function binary functi...

介面卡模式(類介面卡 物件介面卡)

做個筆記 引用 public inte ce usb public inte ce psp public class usber implements usb 類介面卡 psp適用usb介面 public class usbadapter extends usber implements psp 物...

介面卡模式 預設介面卡,類介面卡,物件介面卡

模式思想 改變乙個類的對外介面 增加或減少 以滿足不同外部呼叫者的需求 角色成員 目標介面 target 客戶所期待的介面。目標可以是具體的或抽象的類,也可以是介面。需要適配的類 adaptee 需要適配的類或適配者類。介面卡 adapter 通過包裝乙個需要適配的物件,把原介面轉換成目標介面。適配...