STL (10)函式物件(仿函式)

2021-10-05 17:32:48 字數 2535 閱讀 1914

2 謂詞

3 內建函式物件

概念:

本質:

函式物件(仿函式)是乙個,不是乙個函式

特點:

示例:

#include //1、函式物件在使用時,可以像普通函式那樣呼叫, 可以有引數,可以有返回值

class myadd

};void test01()

//2、函式物件可以有自己的狀態

class myprint

void operator()(string test)

int count; //內部自己的狀態

};void test02()

//3、函式物件可以作為引數傳遞

void doprint(myprint &mp , string test)

void test03()

int main()

總結:

概念:

示例:

#include #include //1.一元謂詞

struct greaterfive

};void test01()

vector::iterator it = find_if(v.begin(), v.end(), greaterfive());

if (it == v.end())

else

}int main()

總結:引數只有乙個的謂詞,稱為一元謂詞

示例:

#include #include //二元謂詞

class mycompare

};void test01()

cout << endl;

cout << "----------------------------" << endl;

//使用函式物件改變演算法策略,排序從大到小

sort(v.begin(), v.end(), mycompare());

for (vector::iterator it = v.begin(); it != v.end(); it++)

cout << endl;

}int main()

總結:引數只有兩個的謂詞,稱為二元謂詞

概念:

分類:

用法:

功能描述:

仿函式原型:

示例:

#include //negate

void test01()

//plus

void test02()

int main()

總結:使用內建函式物件時,需要引入標頭檔案#include

功能描述:

仿函式原型:

示例:

#include #include #include class mycompare

};void test01()

cout << endl;

//自己實現仿函式

//sort(v.begin(), v.end(), mycompare());

//stl內建仿函式 大於仿函式

sort(v.begin(), v.end(), greater());

for (vector::iterator it = v.begin(); it != v.end(); it++)

cout << endl;

}int main()

總結:關係仿函式中最常用的就是greater<>大於

功能描述:

函式原型:

示例:

#include #include #include void test01()

cout << endl;

//邏輯非 將v容器搬運到v2中,並執行邏輯非運算

vectorv2;

v2.resize(v.size());

transform(v.begin(), v.end(), v2.begin(), logical_not());

for (vector::iterator it = v2.begin(); it != v2.end(); it++)

cout << endl;

}int main()

總結:邏輯仿函式實際應用較少,了解即可

stl 仿函式 函式物件

定義 stl原始碼剖析 仿函式其實上就是乙個 行為類似函式 的物件。即主體是物件,只是使用起來像乙個函式。傳遞函式指標 templatebool compare to const t x,const t y templatevoid print compare t fun int main 傳遞的是...

STL 仿函式(函式物件)

定義 一種具有函式特徵的物件,呼叫者可以像函式一樣使用該物件,為了能夠 行為類似函式 該物件所在類必須自定義函式呼叫運算子operator 就可以在仿函式物件後面加上一對小括號,以此呼叫仿函式定義的operator 操作。class mul2 class mul3 intmain for each ...

STL 函式物件(仿函式)概述

在stl提供的各種演算法中往往提供兩個版本,而第二個版本中往往第三個引數,就是乙個函式物件,第乙個版本中預設採用operator 來排序。函式物件可以看成是一種 操作 排序時兩兩相鄰元素滿足使這種操作為真,當然我們可以設計乙個函式,然後傳遞函式指標,但是我們需要抽象介面,函式指標不能與介面卡搭配使用...