SGI STL簡記 十 仿函式 函式物件

2022-08-25 18:27:31 字數 1669 閱讀 2903

仿函式或函式物件(functional):

仿函式也即函式物件,一種具有函式特質的物件,其主要用於stl的演算法中搭配使用,使得演算法實現更為靈活;

此外,仿函式也類似於迭代器,也需要提供必要的相應型別,以支援適配;

仿函式的相應型別主要有:函式引數的型別、函式返回值型別;

stl中已提供了部分仿函式類(已定義好型別),可基於這些仿函式類實現自定義的仿函式,可方便地獲取到型別,支援適配能力。

為了實現自定義的仿函式,需實現過載operator()。

stl已提供兩類運算元的仿函式模板類,一元的unary_function、二元的binary_function以及其他按照功能劃分的算術、關係、邏輯仿函式類。

stl_function.h :

unary_function:一元仿函式模板類,即提供乙個引數型別支援和乙個返回值型別。

binary_function:二元仿函式模板類,可提供兩個引數型別和乙個返回值型別。

基於unary_function實現的內建仿函式模板類,部分如:

negate

:取反;

unary_negate

:由外部仿函式物件呼叫來判斷的取反;

logical_not

:邏輯非;

binder1st

:繫結乙個引數到由仿函式物件呼叫的第乙個位置(即f(value, x));

binder2nd

:繫結乙個引數到由仿函式物件呼叫的第二個位置(即f(x, value));

unary_compose

: 一元復合組合呼叫由仿函式呼叫(即f1(f2(x)));

binary_compose

:二元復合組合呼叫由仿函式呼叫(即f1(f2(x), f3(x)));

pointer_to_unary_function

mem_fun_t、const_mem_fun_t、mem_fun_ref_t、const_mem_fun_ref_t:成員函式繫結呼叫。

基於binary_function實現的內建仿函式模板類,部分如:

plus

:相加操作;

minus

:相減操作;

multiplies

:相乘操作;

divides

:相除操作;

modulus

:求餘操作;

equal_to

、not_equal_to、greater、less、greater_equal、less_equal:關係操作;

logical_and

、logical_or:邏輯操作;

binary_negate

:二元取反,由外部仿函式物件呼叫;

pointer_to_binary_function

mem_fun1_t、const_mem_fun1_t、mem_fun1_ref_t、const_mem_fun1_ref_t:成員函式繫結呼叫。

此外還有const屬性剔除模板類,如:

_constant_void_fun、_constant_unary_fun、_constant_binary_fun以及基於此三者繼承而來的仿函式模板類,如:

constant_void_fun、constant_unary_fun、constant_binary_fun。

python 仿函式 C 仿函式

c 的標準庫stl裡面有6大部件,其中之一為仿函式。初始看到這一名字可能讓人摸不著頭腦 函式倒是挺容易理解,何故又起個仿函式的名字呢?本文將帶你揭開它看起來挺讓人迷惑但是實際上很簡單的面紗。仿函式,看名字就知道它肯定和函式有什麼關聯,但是也肯定和函式有什麼區別。函式主要是一塊接收輸入引數然後按照一定...

vlookup函式簡記

假設a表為全校同學的學號表 姓名,學號 現在b表中是某個班級所有同學的姓名,需要匹配上對應的學號,資料 於a表 a,b放入同乙個工作簿中 現在使用vlookup實現該目標 在b表中的某個單元格中輸入以下內容 vlookup e2,a 2 b 7,2,false 範圍為絕對引用,在對應的引數上直接按f...

仿函式 C 中仿函式的應用

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