STL的仿函式 和函式指標傳參

2021-07-11 23:14:20 字數 1202 閱讀 1334

c_age.h

//在c語言時代,要將函式當做引數傳遞,唯有通過函式指標

//以下是用函式指標實現引數傳遞的示例

# include # includeusing namespace std;

int fcmp(const void *elem1, const void*elem2);

void test()

; for (int i = 0; i < 10; i++)

cout << endl;

//需要給庫裡面的函式寫控制選項,可以防止**冗餘,比如庫裡面實現了公升序演算法但是可以據此寫一種策略

//實現降序演算法

qsort(ia, sizeof(ia) / sizeof(int), sizeof(int), fcmp);

//記住qsort的引數形式,共有四個引數,陣列指標,陣列的大小,所排數型別本身的大小,排序的方法

for (int i = 0; i < 10; i++) }

//實現排序方法的函式

int fcmp(const void *elem1, const void *elem2)

else if (*i1 == *i2)

else if (*i1>*i2) }

//但是函式指標也有他的缺點:最重要的是他無法持有自己的狀態(區域性狀態,local states),也無法達到元件技術中的可適配性

//——也就是無法再將某些修飾條件加諸於其上而改變其狀態

//在標頭檔案stl_age中用仿函式的方法實現實現這種策略

# includeusing namespace std;

templatestruct plus1

//實際上我理解的仿函式就是用乙個類或物件過載()的方式實現函式功能,因為他不是函式呀,加上()

//形式上類似於乙個函式,故此命名為仿函式。

};templatestruct minus1

};int test1()

//後記,剛開始驗證時直接像stl上定義,plus和minus由於庫中存在編譯時出現變數不明確的 錯誤。

//變數名不明確的錯誤一般都是由於定義和庫中相同變數名引起的。

//# include"c_age.h"

# include"stl_age.h"

int main()

c 函式傳參 和 c 函式傳參的區別

先看c 的 public static void getfilename streamwriter sw,string path,int indent,listlistfile listlistfile new list filehandle.getfilename sw,facepic,2,lis...

C語言 函式傳參 傳值 傳指標 傳指標的指標

本文參考這兩篇文章 文章 一 文章二。在學習資料結構中建立單鏈表的時候,疑惑 已經定義了node,用到結構體指標的時候直接用 node就好了,為什麼還要再定義乙個 linklist呢,為什麼傳參的時候又要用linklist l呢?下面我們就來循序漸進,由淺入深來解決問題,這裡舉兩個例子作為比較。首先...

python 函式傳參 傳參和傳引用

首先還是應該科普下函式引數傳遞機制,傳值和傳引用是什麼意思?函式引數傳遞機制問題在本質上是呼叫函式 過程 和被呼叫函式 過程 在呼叫發生時進行通訊的方法問題。基本的引數傳遞機制有兩種 值傳遞和引用傳遞。值傳遞 passl by value 過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在...