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

2021-06-15 07:18:51 字數 738 閱讀 4526

在stl提供的各種演算法中往往提供兩個版本,而第二個版本中往往第三個引數,就是乙個函式物件,第乙個版本中預設採用operator《來排序。

函式物件可以看成是一種「操作」,排序時兩兩相鄰元素滿足使這種操作為真,當然我們可以設計乙個函式,然後傳遞函式指標,但是我們需要抽象介面,函式指標不能與介面卡搭配使用。所以這時候我們需要乙個行為類似函式的物件。

我們來看看一些stl內建的函式物件:

算數類:

加法:plus;減法:minus;乘法multiplies;除法:divide;摸取:modulus;否定:negate;

以下是測試例項:

#include #include using namespace std;

int main()

{ //以下產生一些函式物件的實體

pluspobj;

minusmobj;

multipliesmuobj;

dividesdobj;

modulusmodobj;

negatenobj;

//以下使用函式物件的實體呼叫函式

cout<()(3,5)<()(3,5)<()(3,5)<()(3,5)<

等於:equal_to;不等於:not_equal_to;大於:greater小於:less

大於等於:greater_equal小於或等於:less_equal

用法和上述類似,也是可以顯示建立物件來呼叫,也可以生成臨時物件來呼叫,第二種方法比較普遍。

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 (10)函式物件(仿函式)

2 謂詞 3 內建函式物件 概念 本質 函式物件 仿函式 是乙個類,不是乙個函式 特點 示例 include 1 函式物件在使用時,可以像普通函式那樣呼叫,可以有引數,可以有返回值 class myadd void test01 2 函式物件可以有自己的狀態 class myprint void o...