仿函式或函式物件(functional):此外還有const屬性剔除模板類,如:仿函式也即函式物件,一種具有函式特質的物件,其主要用於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:成員函式繫結呼叫。
_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派生出來的派生類。而這兩種有什麼區別呢?它們之間的區別只是第一種接收的引數個數為乙個,而第二種接收的引數的個數為兩個...