STL之函式物件事例

2021-06-10 05:55:37 字數 1922 閱讀 9872

/*

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