/*
for_each()、transform、bind1st()函式的使用。
知識點:
如果stl函式需要乙個一元函式,而現有乙個能完成相應工作的自適應二元函式,則
可以使用bind1st()或bind2nd使該二元函式適用於一元介面。
程式輸出:
gr8: 36 39 42 45 48
m8: 25 27 29 31 33
sum: 61 66 71 76 81
prod: 90 97.5 105 112.5 120
*/#include
#include
#include
#include
#include
using namespace std;
void show(double);
const int lim = 5;
int main()
;double arr2[lim] = ;
vectorgr8(arr1, arr1 + lim);
vectorm8(arr2, arr2 + lim);
cout << "gr8: \t";
for_each(gr8.begin(), gr8.end(), show);
cout << endl;
cout << "m8: \t";
for_each(m8.begin(), m8.end(), show);
cout << endl;
vectorsum(lim);
transform(gr8.begin(), gr8.end(), m8.begin(), sum.begin(), plus());
cout << "sum: \t";
for_each(sum.begin(), sum.end(), show);
cout << endl;
vectorprod(lim);
transform(gr8.begin(), gr8.end(), prod.begin(), bind1st(multiplies(), 2.5));
cout << "prod: \t";
for_each(prod.begin(), prod.end(), show);
cout << endl;
getchar();
return 0;}
void show(double d)
/*程式輸出:
enter words (enter quit to quit):
liuyan
minliu
quit
you entered the following words:
liu yan min liu
alphabetic list of words:
liu min yan
word frequency :
liu: 2
min: 1
yan: 1
*/#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
char tolower(char ch)
string &tolower(string &st);
void display(const string &s);
int main()
getchar();
getchar();
return 0;}
string &tolower(string &st)
void display(const string & s)
STL之函式物件
目錄 為了使類屬演算法具有靈活性,stl常使用函式的過載機制為演算法提供兩種形式。演算法的第一種形式使用的是常規的操作來實現。第二種形式中,演算法可以根據使用者指定的準測對元素經行處理。函式物件包含了乙個可以通過函式呼叫運算子 使用的函式。實際上,函式物件是過載了函式呼叫運算子operator 的類...
STL之函式物件
過載函式呼叫操作符的類,其物件常稱為函式物件 function object 即它們是行為類似函式的物件,也叫仿函式 functor 其實就是過載 操作符,使得類物件可以像函式那樣呼叫。假定某個類有乙個過載的operator 而且過載的operator 要求獲取乙個引數,我們就將這個類稱為 一元仿函...
STL函式物件之自定義函式物件
如何定義自己的函式物件,它使用於任何的繫結器 要定義自己的繫結器要滿足一定的條件 必須提供引數和返回值的型別。stl為我們提供了兩個結構體 template struct unary function template struct binary function 乙個例子 template str...