溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

函數(shù)適配器

發(fā)布時(shí)間:2020-06-10 19:37:40 來(lái)源:網(wǎng)絡(luò) 閱讀:394 作者:匯天下豪杰 欄目:編程語(yǔ)言

1、綁定器和取反器

  (1)、綁定器:把二元函數(shù)對(duì)象中一個(gè)參數(shù)固定,使之轉(zhuǎn)為一元函數(shù),C++標(biāo)準(zhǔn)庫(kù)中提供了2種預(yù)定義的binder適配器,bind1st、bind2nd,分別綁定了第一個(gè)/第二個(gè)參數(shù);

  (2)、取反器:翻轉(zhuǎn)的適配器;

  (3)、一元函數(shù):只針對(duì)一個(gè)參數(shù),只有一個(gè)返回值;

  二元函數(shù):針對(duì)2個(gè)參數(shù),只有一個(gè)返回值;

  (4)、綁定器針對(duì)的是參數(shù),綁定后其值就不變了,取反器對(duì)其進(jìn)行取反;

  (5)、可以通過(guò)調(diào)試工具-g;對(duì)源碼進(jìn)行剖析;

2、代碼實(shí)現(xiàn)

關(guān)于綁定器和取反器的代碼:

#include<iostream>
#include<list>
#include<algorithm>
using namespace std;

int main(void){
    int ar[] = {1,3,5,7,9,8,6,4,2,0};
    int n = sizeof(ar) / sizeof(int);
    int nCount = count(ar,ar+n, 4);//求數(shù)組中一共有多少個(gè)4
    cout<<nCount<<endl;
    //x <= 4;的個(gè)數(shù)
    nCount = count_if(ar, ar+sizeof(ar)/sizeof(int), bind2nd(greater<int>(), 4));//用的是第二個(gè)綁定器進(jìn)行的綁定;;
    //4 < x
    //nCount = count_if(ar, ar+sizeof(ar)/sizeof(int), bind1st(less<int>(), 4));//用的是第一個(gè)綁定器進(jìn)行的綁定;
    cout<<nCount<<endl;
    //對(duì)x < 4;進(jìn)行取反,也就是x >= 4的個(gè)數(shù);
    nCount = count_if(ar, ar+n, not1(bind2nd(less<int>(), 4)));//用的是取反器進(jìn)行取反;
    cout<<nCount<<endl;


    return 0;
}

運(yùn)行結(jié)果

函數(shù)適配器



向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI