锘??xml version="1.0" encoding="utf-8" standalone="yes"?>class ClxECS
{
public:
int DoSomething()
{
// 榪欓噷浠ヨ緭鍑轟竴鍙ヨ瘽鏉ヤ唬鏇垮叿浣撶殑鎿嶄綔
cout << "Output from method DoSomething!" << endl;
return 0;
};
};
鐜板湪瀹氫箟濡備笅涓涓獀ector錛?br>
vector<ClxECS*> vECS;
for(int i = 0; i < 13; i++)
{
ClxECS *pECS = new ClxECS;
vECS.push_back(pECS);
}
for(int i = 0; i < vECS.size(); i++)
vECS.at(i)->DoSomething();
褰撶劧錛屾垜浠篃鍙互鐢╥terator錛?br>
for(vector<ClxECS*>::iterator it = vECS.begin(); it != vECS.end(); ++it)
(*it)->DoSomething();
浣嗘槸錛屾湁寰堝C++鐨勯珮鎵嬪拰鐗涗漢浠兘浼氱粰鎴戜滑涓涓繝鍛婏紝閭e氨鏄細鍦ㄥ鐞哠TL閲岄潰鐨勫鍣ㄧ殑鏃跺欙紝灝介噺涓嶈鑷繁鍐欏驚鐜?br> 閭d箞錛屾垜浠氨鍙ソ鐢⊿TL綆楁硶閲岄潰鐨刦or_each浜嗐?br> 棣栧厛錛屾坊鍔犲涓嬩竴涓嚱鏁幫細
int DoSomething(ClxECS *pECS)
{
return pECS->DoSomething();
}
鐒跺悗灝卞彲浠ョ敤for_each鏉ュ疄鐜版垜浠兂瑕佺殑鍔熻兘錛?br>
for_each(vECS.begin(), vECS.end(), &DoSomething);
璇翠簡鍗婂ぉ錛屼技涔庤窡mem_fun鍜宮em_fun_ref娌℃湁浠涔堝叧緋匯傚叾瀹烇紝璇撮偅涔堝閮芥槸涓轟簡寮曞嚭mem_fun鍜宮em_fun_ref銆傚湪鐢╢or_each鐨勬椂鍊欙紝濡傛灉鎴戜滑涓嶆坊鍔犱笂闈㈢殑閭d釜鍑芥暟錛岃鎬庝箞鍔炲憿錛?br> 榪欎釜鏃跺欏氨璇em_fun鍜宮em_fun_ref闅嗛噸鐧誨満浜嗐傜敤濡備笅榪欎竴琛屼唬鐮佸氨琛屼簡錛?br>
for_each(vECS.begin(), vECS.end(), mem_fun(&ClxECS::DoSomething));
涓嶇敤鎴戝璇達紝澶у搴旇宸茬粡鏄庣櫧mem_fun鏄共浠涔堝拰璇ユ庝箞鐢ㄧ殑浜嗐?br> mem_fun_ref鐨勪綔鐢ㄥ拰鐢ㄦ硶璺焟em_fun涓鏍鳳紝鍞竴鐨勪笉鍚屽氨鏄細褰撳鍣ㄤ腑瀛樻斁鐨勬槸瀵硅薄瀹炰綋鐨勬椂鍊欑敤mem_fun_ref錛屽綋瀹瑰櫒涓瓨鏀劇殑鏄璞$殑鎸囬拡鐨勬椂鍊欑敤mem_fun銆?nbsp;
[杞澆鍐呭]
]]>