關於在標準庫演算法中使用函式物件的一點認識

2021-06-28 06:08:01 字數 711 閱讀 3966

在程式的設計中,標準庫演算法例如std::for_each(inputiterator _first, inputiterator _last, function _func ),std::find_if(inputiterator _first, inputiterator _last, predicate _pred)等等,都非常有用。特別是_func ,_pred等操作,允許我們定製針對迭代器所指向的元素的操作。

當_func,_pred需要帶有乙個或多個引數時,stl提供了bind、bind1st等函式來繫結引數。

目前來說,我對這個函式的使用還不多,不大熟悉,接下來會多用用。那麼,現在我所使用的方式就是,直接使用帶引數的函式物件,就像:function fn(parameter1,parameter2...);function 是定義好的類,過載了operator()操作符。這種方式的乙個缺點是,如果出現要呼叫迭代區間中物件的成員函式的情況,且這種很多,則需要大量定義函式物件對應的類。這樣,就不如使用bind等方便。

在使用std::for_each(inputiterator _first, inputiterator _last, function _func )時,我還發現,_func 是通過by_value的方式傳遞到演算法中的,所以如果稍後還要需要利用_func中某個成員變數的結果,這種方法是不行的,除非這個成員變數是個指標,但這樣可能會帶來一些麻煩,例如,在析構函式中delete是不大可能了,需要自己動手delete掉該變數。

在Axapta中使用標準SQL

雖然axapta當中的sql statement提供了強大的功能,但是由於與整體的功能設計有衝突 如table可以作為變數 axapta省去了一些標準的sql關鍵字,如union,distinct等。那麼我們想使用的話,那怎麼辦呢?我們可以利用statement這個類在axapta中執行標準的sql...

在VC中使用MATLAB C C 函式庫

在vc中使用matlab c c 函式庫 matlab廣泛應用於線性代數 自動控制理論 數理統計 數字訊號處理 時間序列分析 動態系統 等領域。因此如果在vc中對matlab進行呼叫將大大減少程式設計的工作量 保證程式的準確性,並且繼承了vc 強大的功能,提高開發效率,本文將介紹了在vc中使用mat...

在QTP中使用Dictionary物件

vbscript的dictionary 物件與perl的關聯陣列 associative array 類似,其中儲存的內容可以是任何資料,每乙個儲存的資料都與乙個唯一的鍵 key 關聯,鍵用於獲取每一項資料,鍵通常是整型或字串型別。在qtp中,可以把dictionary 當成陣列來用,而且可以隨時新...