有時候需要對內建函式物件返回值進行進一步的簡單計算,或者填上多餘的引數,不能直接代入演算法。函式介面卡實現了這一功能,函式介面卡是將一種函式物件轉化為另一種符合要求的函式物件。
函式介面卡可以分為4個大類:
繫結介面卡、組合介面卡、指標函式介面卡和成員函式介面卡。
//需求:在遍歷容器的時候,將容器中的值全部加上100之後顯示出來
//如果想要繫結介面卡,需要自定義函式物件繼承binary_function(自定義函式物件是二元函式物件)、
//unary_function(自定義函式物件是一元函式物件)
class myprint:public binary_function
};//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));
}class greaterthenfive:public unary_function
};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::iterator it = find_if(v.begin(), v.end(), not1( bind2nd(greater(),5)));
if (it == v.end())
else
//排序 二元函式物件
sort(v.begin(), v.end(), not2(less()));
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()
//如果容器存放的是物件指標, 那麼用mem_fun
//如果容器中存放的是物件實體,那麼用 mem_fun_ref
void test05()
介面卡模式 預設介面卡,類介面卡,物件介面卡
模式思想 改變乙個類的對外介面 增加或減少 以滿足不同外部呼叫者的需求 角色成員 目標介面 target 客戶所期待的介面。目標可以是具體的或抽象的類,也可以是介面。需要適配的類 adaptee 需要適配的類或適配者類。介面卡 adapter 通過包裝乙個需要適配的物件,把原介面轉換成目標介面。適配...
介面卡模式(類介面卡 物件介面卡)
做個筆記 引用 public inte ce usb public inte ce psp public class usber implements usb 類介面卡 psp適用usb介面 public class usbadapter extends usber implements psp 物...
STL中函式介面卡
首先為什麼要用函式介面卡?stl中的函式介面卡分類 1 繫結介面卡用法 將乙個運算元繫結到給定值而將二元函式物件轉換為一元函式物件。bind2nd 將給定值繫結到二元函式物件的第二個實參 bind1st 將給定值繫結到二元函式物件的第乙個引數 示例程式如下 include include inclu...