<functional>
定義標準樣板程式庫 (STL) 的函式,幫助您建構, 函式物件,亦稱為 functors,以及其文件夾。 函式物件是一種物件的型別定義, operator()。 函式物件可以是函式指標,但更常見的方法,該物件用來儲存可以在函式呼叫期間存取的其他資訊。
#include <functional>
備註
演算法需要兩種類型的函式物件: 一元 (unary) 和二進位。 一元 (unary) 函式物件,可能需要一個引數,以及二進位的函式物件,可能需要兩個引數。 函式物件和函式指標傳成一個述詞的演算法,但函式物件也是可調適性,並增加領域、 彈性與 STL 的效率。 比方說,值所需繫結至函式以一種演算法在傳遞之前,如果函式指標可能無法使用。 函式的介面卡會將函式指標轉換為可繫結值的可調適性的函式物件。 <functional> 標頭 也包含可以讓成員函式呼叫做可調適性的函式物件的成員函式介面卡。 函式會指定其引數的巢狀型別宣告後,才可調適性和傳回型別。 C + + 標準要求此適應性實作藉由從 unary_function 或 binary_function 的基底類別繼承的所有標準的物件類別。 函式允許物件和其介面卡來升級現有的應用程式,並協助在 C++ 的程式設計環境中整合 STL STL。
TR1 擴充
在 Visual C++ 的實作 TR1 中也會加入下列功能:
A 呼叫簽章的傳回型別,後面接著括號以逗號分隔清單的零或多個引數型別名稱。
A 呼叫包裝函式是呼叫包裝函式型別的物件。
A 呼叫包裝函式型別是擁有可呼叫的物件,並支援呼叫作業,會將轉寄給該物件的型別。
A 可呼叫的物件是一種可以呼叫型別的物件。
A 可呼叫的型別是指向函式、 成員函式的指標、 成員資料的指標或函式呼叫運算子的左邊可以會立即出現的物件是類別型別。
A 目標物件是由呼叫包裝函式物件的可呼叫物件。
Pseudo-function INVOKE(f, t1, t2, ..., tN)表示下列動作之一:
(t1.*f)(t2, ..., tN)當f是指向成員函式類別的T和t1是一種物件型別的T型別的物件的參照位址T或參考型別的物件衍生自T。
((*t1).*f)(t2, ..., tN)當f是指向成員函式類別的T和t1不是其中一個上一個項目中所描述的型別。
t1.*f當f是類別的成員資料指標T和t1是一種物件型別的T型別的物件的參照位址T或參考型別的物件衍生自T。
(*t1).*f當f是類別的類別的成員資料指標T和t1不是其中一個上一個項目中所描述的型別。
f(t1, t2, ..., tN)在其他情況下。
Pseudo-function INVOKE(f, t1, t2, ..., tN, R)表示INVOKE(f, t1, t2, ..., tN)隱含轉換成R。
如果呼叫的包裝函式有弱式的結果型別,其成員型別的型別result_type根據型別T的目標物件的包裝函式,如下所示:
如果T是指向函式, result_type是對的傳回型別同義資料表T。
如果T是指向成員函式, result_type是對的傳回型別同義資料表T。
如果T是指向資料成員, result_type是同義資料表的資料成員的宣告型別。
如果T是類別型別具有成員型別的result_type,然後result_type是個T::result_type。
否則,就沒有任何成員result_type。
每個呼叫包裝函式受到複製建構函式。 A 簡單的呼叫包裝函式是有個工作分派運算子的複製建構函式和設定運算子不擲回例外狀況的呼叫包裝函式。 A 轉寄呼叫包裝函式是呼叫包裝函式可使用的引數清單呼叫t1, t2, ..., tN,其中每個ti是左值。
此標頭支援函式呼叫運算子具有型別的引數中所定義的呼叫包裝函式T1, T2, ..., TN,其中0 <= N <= NMAX。 在此實作中,值NMAX為 10。
類別
類別的描述,以表示而擲回例外狀況的呼叫operator()上函式物件失敗,因為物件是空的。 |
|
樣板類別,提供成員函式會否定指定二進位的函式的傳回值。 |
|
提供藉由繫結至指定的值的二進位的函式的第一個引數會將二進位的函式物件轉換成一元 (unary) 函式物件的建構函式樣板類別。 |
|
提供藉由繫結至指定的值的二進位的函式的第二個引數會將二進位的函式物件轉換成一元 (unary) 函式物件的建構函式樣板類別。 |
|
允許使用任何引數呼叫做為一元 (unary) 函式物件參考引數以初始化時利用 const 成員函式配置器類別。 |
|
允許使用任何引數呼叫做為一元 (unary) 函式物件時使用指標引數來初始化利用 const 成員函式配置器類別。 |
|
允許利用 const 的成員函式可接受單一引數為二進位的函式物件參考引數以初始化時呼叫配置器類別。 |
|
可接受單一引數呼叫以二進位的函式物件時使用指標引數來初始化常數成員函式讓配置器類別。 |
|
這種類別會包裝可呼叫的物件。 |
|
計算值的雜湊程式碼的類別。 |
|
如果特定的型別藉由呼叫產生會測試類別bind。 |
|
如果特定的型別預留位置會測試類別。 |
|
配置器類別,可讓 non_const 成員函式採用任何引數做為一元 (unary) 函式物件參考引數以初始化時呼叫。 |
|
配置器類別,可讓 non_const 成員函式採用任何引數做為一元 (unary) 函式物件使用指標引數來初始化時呼叫。 |
|
配置器類別,可讓 non_const 接受一個引數為二進位的函式物件參考引數以初始化時呼叫成員函式。 |
|
配置器類別,可讓 non_const 接受單一引數為二進位的函式物件時使用指標引數來初始化呼叫成員函式。 |
|
將二進位的函式指標轉換成可調適性的二進位函式。 |
|
一元 (unary) 函式指標轉換的可調適性的一元 (unary) 函式。 |
|
類別,會換行的參考。 |
|
這種結構會保留包裝的可呼叫物件的傳回型別。 |
|
樣板類別,提供成員函式,可以取消指定的一元 (unary) 函式的傳回值。 |
功能
將引數繫結至可呼叫的物件。 |
|
協助專家樣板函式會建立一個轉換插頭,藉由繫結至指定的值的二進位的函式的第一個引數時,將二進位的函式物件轉換成一元 (unary) 函式物件。 |
|
協助專家樣板函式會建立一個轉換插頭,藉由繫結至指定的值的二進位的函式的第二個引數時,將二進位的函式物件轉換成一元 (unary) 函式物件。 |
|
傳回兩個參數的二進位 AND。 |
|
傳回兩個參數的二進位 OR 運算。 |
|
傳回兩個參數的二進位 XOR。 |
|
建構 const reference_wrapper從引數。 |
|
會產生簡單的呼叫包裝函式。 |
|
用來建構函式成員函式時使用指標引數來初始化的物件透過介面卡的協助專家樣板函式。 |
|
協助專家樣板函式用來建構函式成員函式時使用參考引數來初始化的物件透過介面卡。 |
|
傳回的補數一元述詞。 |
|
傳回的二元述詞的互補。 |
|
協助專家樣板函式用來轉換一元和二元函式指標,分別為一元和二元可調適性的函式。 |
|
建構reference_wrapper從引數。 |
|
交換兩個function物件。 |
Structs
一個空白的基底類別定義可能會由提供二進位的函式物件的衍生類別所繼承的型別。 |
|
此類別會提供預先定義的函式物件,在指定的值型別的項目上執行除法運算。 |
|
二元述詞,以測試指定之型別的值是否等於另一個該型別的值。 |
|
二元述詞,以測試指定之型別的值是否大於另一個該型別的值。 |
|
測試指定之型別的值是否大於或等於另一個值,該型別的二元述詞。 |
|
二元述詞,測試指定之型別的值是否小於另一個該型別的值。 |
|
測試指定之型別的值是否小於或等於另一個值,該型別的二元述詞。 |
|
此類別會提供預先定義的函式物件,執行指定的值型別,並測試成立的項目或 falsity 的結果一起使用的邏輯運算。 |
|
此類別會提供預先定義的函式物件,在指定的值型別,並測試成立的項目或 falsity 的結果用於執行邏輯否定的作業。 |
|
此類別會提供預先定義的函式物件在指定的值型別,並測試成立的項目或 falsity 的結果上執行邏輯分離的作業。 |
|
此類別會提供預先定義的函式物件,在指定的值型別的項目上執行減法的數學運算。 |
|
此類別會提供預先定義的函式物件,在指定的值型別的項目上執行算術運算的模數。 |
|
此類別會提供預先定義的函式物件,在指定的值型別的項目上執行乘法運算。 |
|
此類別會提供預先定義的函式物件,會傳回項目值的負值。 |
|
測試指定之型別的值是否不等於另一個值,該型別的二元述詞。 |
|
此類別會提供預先定義的函式物件,在指定的值型別的項目上執行加法運算。 |
|
一個空白的基底類別定義可能會由提供一元 (unary) 函式物件的衍生類別所繼承的型別。 |
物件
可取代的引數的預留位置。 |
運算子
不允許可呼叫物件的相等比較。 |
|
不允許可呼叫的物件不相等的比較。 |