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...