C 中 仿函式簡單介紹

2021-10-22 17:14:05 字數 1420 閱讀 4134

仿函式,顧名思義,就是「仿造函式」的意思,它並不是函式,但是卻有著類似於函式的行為。那麼,它到底是什麼?

首先要說的是:仿函式是泛型程式設計強大威力和純粹抽象概念的又乙個例證。我們在c++最早接觸泛型程式設計的恐怕是在學模板(template)的時候,它具有可以任意指定型別的特點。仿函式也具有這個特點,這也充分體現出來仿函式靈活性的特點。

在類中實現乙個operator(),並給予合適的引數型別,這個類就有了類似於函式的行為,就是乙個仿函式類了。

簡單的仿函式例項:

將乙個個功能通過類來實現,大多數情況下會加大**量。仿函式也是如此,但是仿函式卻有著許多優點,除了上述的有利於資源管理、有利於**維護外,還具有這些特點

(1)智慧型性:仿函式是通過仿函式類來實現的,既然是類,裡面就可以儲存許多變數還有其他的一些資訊。我們可以利用這個特徵實現許多純的函式實現不了的功能,舉個簡單的例子:我若再仿函式中加入了統計呼叫函式次數的功能。那麼在我使用仿函式的時候,就可以自動實現統計次數的功能。所以說,它更加智慧型。

(2)靈活性:或者說,每個仿函式都可以有自己的型別。由於仿函式是泛型程式設計的乙個例證,它可以任意指定型別。

(3)通常比一般函式速度更快:尤其是大量呼叫函式的過程中。比如說:stl排序的時候,所需要的那個排序規則(為乙個bool型的函式)。

stl提供了一些仿函式,使得程式設計變得更加便捷,主要分為以下三類:

plus:相加

minus:相減

multiplies:相乘

divides:相除

modulus:取模

negate:取否

equal_to:等於

not_equal_to:不等於

greater:大於

greater_equal:大於等於

less:小於

less_equal:小於等於

logical_and:邏輯與

logical_or:邏輯或

logical_no:邏輯否

#include#includeusing namespace std;

class myclass;

class compare};

void main()

執行結果:

C 的STL之仿函式簡單介紹

include include include 演算法 include 仿函式 using namespace std bool less3 int x int main void 仿函式 繫結函式 第乙個大於30的數字 auto ifind find if myvecyor.begin myvec...

C 中的Lambda表示式與仿函式簡單介紹

c 中的lambda表示式是c 11新引入的內容,從結論上來說lambda表示式並不是必要的,但是在很多情況下可以簡化我們的 了解一下還是很有用處的。基本語法 簡單來說,lambda函式也就是乙個函式,它的語法定義如下 capture parameters mutable return type1....

仿函式 C 中仿函式的應用

仿函式 c 中仿函式的應用 在使用仿函式的時候,主要用到以下兩種 一種是以基類std unary function派生出來的派生類 另一種是以基類std binary function派生出來的派生類。而這兩種有什麼區別呢?它們之間的區別只是第一種接收的引數個數為乙個,而第二種接收的引數的個數為兩個...