中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中如何使用函數對象

發布時間:2021-07-23 16:36:29 來源:億速云 閱讀:183 作者:Leah 欄目:編程語言

C++中如何使用函數對象,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

適合對屬于基本數據類型的對象排序,它使用<作為排序比較規則,第2種語法則是根據指定排序規則comp來進行排序,其中comp參數就是一個函數對象。如果要排序的對象不是如int,float等簡單類型或不想使用<作為排序規則的話就得使用第2種語法。

指定一個函數對象來作為排序規則(函數對象)進行排序,那函數對象究竟是什么了,其實簡單地說它就是一些使用起來像調用函數一樣的對象,如:一般的函數,函數指針,或重載了()運算符的類的實例等,使用這些對象的方式好像調用函數一樣所以稱這些對象為C++函數對象,如下就是函數對象定義:

 void print(int x)   {          if(x>=0&&x<=100) cout<<x<<” ”;   }           //函數對象指針   typedef void(*ptPrint)(int x);   ptPrint prt=print;   //一個重載了()運算符得類   class isOk    {     public:     bool operator () (int val)     {           if(val<0||val>100)   {          return false;   }     return true;   }   };

有了上面得定義后,我們就可以以函數調用的形式使用上面的函數對象了,如: for_each(vectorA.begin(),vectorA.end(),print)打印大于等于0小于等于100的數, transform(vectorA.begin(),vectorA.end(),vectorB.begin(),isOk())判斷向量vectorA中值x的范圍是否在0之100之間。

如果在則向量vectorB對應的值為真,否則為假,其中vectorB中的數據類型為bool。在實際中往往會根據調用函數對象時參數的多少將函數對象分為三種形式,,無參函數對象,一元函數對象和二元函數對象,剛才的C++函數對象就是一個無參函數對象。無參函數對象與一元,二元函數對象有很大的區別,一元,二元函數對象的定義需要繼承以下函數原型:

class Grade   {   public:       Grade(int id,string name,int score)       {           ID=id;           Name=name;           Score=score;       }       int ID;       string Name;       int Score;   };

看完上述內容,你們掌握C++中如何使用函數對象的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

亳州市| 胶南市| 民县| 当阳市| 卢湾区| 黑水县| 左贡县| 钦州市| 芜湖市| 中阳县| 舟曲县| 长治县| 博乐市| 柳江县| 姜堰市| 东乡族自治县| 万山特区| 宜昌市| 普定县| 辽阳市| 湘潭县| 遵义县| 巴林右旗| 登封市| 平塘县| 吉木乃县| 辽中县| 黄山市| 德清县| 永安市| 松阳县| 正镶白旗| 房山区| 昌吉市| 上林县| 华安县| 抚顺县| 丹巴县| 德庆县| 武邑县| 万源市|