C 謂詞,函式介面卡

2021-09-07 09:19:08 字數 1633 閱讀 9155

1 、謂詞

謂詞,就是乙個判斷式,是乙個返回bool型別的函式,或者也可以是函式物件(仿函式)。

和函式物件(一元,二元)一樣,謂詞也有一元謂詞和二元謂詞之分,這個元一樣的表示的是函式的引數有幾個

#include

using namespace std;

#include

"string"

#include

#include

#include

"functional"

class mygreat

bool operator()

(int

&value1)

else

return false;

}private:

int my_value;};

intmain

(void

) cout <<

"初始值:"

<< endl;

for(vector<

int>

::iterator it1 = v1.

begin()

; it1 != v1.

end(

); it1++

) cout << endl;

cout <<

"計算容器中等於3的個數"

<< endl;

int num1 =

count

(v1.

begin()

, v1.

end(),

3); cout << num1 << endl;

cout <<

"計算容器中大於3的個數"

<< endl;

int num2 =

count_if

(v1.

begin()

, v1.

end(),

mygreat(3

)); cout << num2 << endl;

cout <<

"計算容器中大於n的個數"

<< endl;

int gre_num;

cout <<

"輸入n的值:"

; cin >> gre_num;

mygreat mygread_num3

(gre_num)

;int num3 =

count_if

(v1.

begin()

, v1.

end(

), mygread_num3)

; cout << num3 << endl;

system

("pause");

}

2、函式介面卡

有時候有這樣的需求,我們的謂詞是二元的,第乙個引數來自容器內的元素,第二個引數來自我們自己設定個某個值(舉個簡單的例子幫助自己理解,比方我們要計算某個容器中大於100的值有多少個,這時候,顯然我們要有兩個引數,乙個是容器內的每個引數都檢查一遍,第二個引數是100這個值)

具體的我們來看stl中的乙個函式count_if()(有if的通常要加謂詞)

int

main

(void

)

STL介面卡 函式介面卡

有時候需要對內建函式物件返回值進行進一步的簡單計算,或者填上多餘的引數,不能直接代入演算法。函式介面卡實現了這一功能,函式介面卡是將一種函式物件轉化為另一種符合要求的函式物件。函式介面卡可以分為4個大類 繫結介面卡 組合介面卡 指標函式介面卡和成員函式介面卡。需求 在遍歷容器的時候,將容器中的值全部...

C 函式介面卡

2013年08月15日 09 10 04 1519人閱讀收藏 舉報c 深入學習 151 先弄清幾個概念,什麼叫一元函式,二元函式 1.一元函式乙個引數 2.二元函式 兩個引數 3.一元謂詞 乙個引數,返回型別為bool型 4.二元謂詞 兩個引數,返回型別為bool型 函式介面卡是用來讓乙個函式物件表...

C 函式介面卡

1 考慮下面的需求,在乙個int的vector中,找出乙個比5的元素,容易想到的解決辦法,定義乙個方法物件,使用模板,如下 vector iterator iter find if intvec.begin intvec.end finder 3 2 分析 find if的偽 如下 for firs...