1.函式指標
函式指標即函式的位址,函式的位址是儲存其機器語言**記憶體的開始位址。函式的位址可作為其他函式的引數。
獲取函式的位址很簡單
:只要使用函式名
(後面不跟引數
)即可。也就是說,如果
think()
是乙個函式,則
think
就是該函式的位址。要將函式作為引數進行傳遞,必須傳遞函式名。一定要區分傳遞的是函式的位址還是函式的返回值。
process(think); //函式think()的位址傳給process()
process(think()); //函式think()的返回值傳給process()
2.函式符
函式符是可以以函式方式與()結合使用的任意物件。這包括函式名、指向函式的指標和過載了()運算子的類物件(即定義了函式operator()()的類)。函式符是乙個類物件,並非只能像函式名那樣使用它,這要歸功於類方法operator()()。函式符的優點之一是,可使用同乙個函式符來完成這兩項基數任務。
例如:
class f_mod;
bool operator()(int x)
private:
int dv;
};
則f_mod obj(3); //f_mod.dv=3
而這個物件可使用方法operator()來返回乙個bool值
bool is_div_by_3 = obj(7); //等價於obj.operator()(7)
3.lambda函式
名稱lambda來自lambda calculus(λ演算),一種定義和應用函式的數學系統。這個系統讓您能夠使用匿名函式——即無需給函式命名。在c++11中,對於接受函式指標或函式符的函式,可以使用匿名函式定義(lambda)作為其引數。
例如:
bool f3(int i)
函式f3()對應的lambda表示式為:
(int x)
差別有兩個:1)使用代替了函式名(這就是匿名的由來)
2)沒有宣告返回型別。返回型別相當於使用decltyp根據返回值推斷得到的,這裡為bool。
函式指標、函式符和lambda函式code:
#include"iostream"
#include"vector"
#include"algorithm"
#include"cmath"
#include"ctime"
using namespace std;
const long size1 = 39l;
const long size2 = 100 * size1;
const long size3 = 100 * size2;
bool f3(int i)
bool f13(int i)
int main()
{ vectornumbers(size1);
srand(time(0));
generate(numbers.begin(), numbers.end(),rand);
//使用函式指標
cout << "sample size"<
內建函式filter 和匿名函式lambda解析
一.內建函式filter filter 函式是 python 內建的乙個高階函式,filter 函式接收乙個函式 f 和乙個list,這個函式 f 的作用是對每個元素進行判斷,返回由符合條件迭代器 python3以下版本返回是列表 語法 filter function or none,iterabl...
python學習之map函式和lambda函式
map 是 python 內建的高階函式,它接收乙個函式 f 和乙個 list,並通過把函式 f 依次作用在 list 的每個元素上,得到乙個新的 list 並返回。map function,iterable,在map中,不會對itetable進行修改 def fun x return 2 x t ...
指標函式和函式指標
指標函式和函式指標 一 指標函式 當乙個函式宣告其返回值為乙個指標時,實際上就是返回乙個位址給呼叫函式,以用於需要指標或位址的表示式中。格式 型別說明符 函式名 引數 當然了,由於返回的是乙個位址,所以型別說明符一般都是int。例如 int getdate int aaa int,int 函式返回的...