C++中如何使用函數(shù)對象,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
網(wǎng)站制作、網(wǎng)站設(shè)計(jì)的關(guān)注點(diǎn)不是能為您做些什么網(wǎng)站,而是怎么做網(wǎng)站,有沒有做好網(wǎng)站,給創(chuàng)新互聯(lián)一個(gè)展示的機(jī)會(huì)來證明自己,這并不會(huì)花費(fèi)您太多時(shí)間,或許會(huì)給您帶來新的靈感和驚喜。面向用戶友好,注重用戶體驗(yàn),一切以用戶為中心。
適合對屬于基本數(shù)據(jù)類型的對象排序,它使用<作為排序比較規(guī)則,第2種語法則是根據(jù)指定排序規(guī)則comp來進(jìn)行排序,其中comp參數(shù)就是一個(gè)函數(shù)對象。如果要排序的對象不是如int,float等簡單類型或不想使用<作為排序規(guī)則的話就得使用第2種語法。
指定一個(gè)函數(shù)對象來作為排序規(guī)則(函數(shù)對象)進(jìn)行排序,那函數(shù)對象究竟是什么了,其實(shí)簡單地說它就是一些使用起來像調(diào)用函數(shù)一樣的對象,如:一般的函數(shù),函數(shù)指針,或重載了()運(yùn)算符的類的實(shí)例等,使用這些對象的方式好像調(diào)用函數(shù)一樣所以稱這些對象為C++函數(shù)對象,如下就是函數(shù)對象定義:
void print(int x) { if(x>=0&&x<=100) cout<100) { return false; } return true; } };
有了上面得定義后,我們就可以以函數(shù)調(diào)用的形式使用上面的函數(shù)對象了,如: for_each(vectorA.begin(),vectorA.end(),print)打印大于等于0小于等于100的數(shù), transform(vectorA.begin(),vectorA.end(),vectorB.begin(),isOk())判斷向量vectorA中值x的范圍是否在0之100之間。
如果在則向量vectorB對應(yīng)的值為真,否則為假,其中vectorB中的數(shù)據(jù)類型為bool。在實(shí)際中往往會(huì)根據(jù)調(diào)用函數(shù)對象時(shí)參數(shù)的多少將函數(shù)對象分為三種形式,,無參函數(shù)對象,一元函數(shù)對象和二元函數(shù)對象,剛才的C++函數(shù)對象就是一個(gè)無參函數(shù)對象。無參函數(shù)對象與一元,二元函數(shù)對象有很大的區(qū)別,一元,二元函數(shù)對象的定義需要繼承以下函數(shù)原型:
class Grade { public: Grade(int id,string name,int score) { ID=id; Name=name; Score=score; } int ID; string Name; int Score; };
看完上述內(nèi)容,你們掌握C++中如何使用函數(shù)對象的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!