判定函式:
例:只把數值1中滿足條件的值複製到陣列2中
remove_copy_if()演算法對輸入序列的每個元素都應用gt15(),並且在向輸出序列寫入時忽略掉那些使判定函式產生真值的元素。
流迭代器
例:輸出流迭代器
例:輸入流迭代器
remove_copy_if()的第1個引數,把乙個istream_iterator的物件應用於含有正數的輸入檔案流。第2個引數實用istream_iterator類的預設建構函式。這個呼叫構造了istream_iterator的乙個特殊值,用以指示檔案的結束。這樣,當第1個迭代器最終遇到物理檔案的結尾時,它與istream_iterator()的值進行是否相等的比較,以便演算法正確結束。注意,本例中完全避免了直接實用陣列。
函式物件:它實現起來像函式,同時儲存狀態,使用時卻不用考慮函式引數的個數。
函式物件是過載了operator()的類的乙個例項。
函式物件的分類:
發生器:一種沒有引數且返回乙個任意型別值的函式物件。
一元函式:一種只有乙個任意型別的引數,且返回乙個可能不同型別值的函式物件。
二元函式:一種有兩個任意型別的引數,且返回乙個任意型別值的函式物件。
一元判定函式:返回bool型值的一元函式。
二元判定函式:返回bool型值的二元函式。
嚴格弱序:一種更廣義地理解「相等」概念的二元判定函式。
術語:小於可比較:含有小於運算子 operator< 的類。
可賦值:含有對於同型別指定賦值操作符operator= 的類。
相等可比較:含有對於同型別相等運算子operator==的類。
標頭檔案中定義了大量有用的通用函式物件。
可以用函式物件介面卡來獲得乙個簡單的函式物件,並且調證它們用來與操作鏈中的其他函式物件配合。
例:自動建立函式物件:
可調整的函式物件:
標頭檔案中提供了兩種模板來定義型別名稱:unary_function和binary_function。當為派生自這些類的簡單函式物件填寫引數型別時,可以由這些型別作為函式引數。
函式指標介面卡:
ptr_fun()介面卡把指向乙個函式的指標轉化成為乙個函式物件。
例:ptr_fun()的二元版本
pow()函式在標準c++標頭檔案中定義,有多個過載版本,需要顯示函式模板特化。
例:呼叫有乙個引數的成員函式
transform()使用第1個範圍(物件生存的範圍)的開始和結束點;第2個範圍的開始點,就是持有的那個表示成員函式的引數;目的迭代器,在本例中就是標準輸出;且為每個物件呼叫函式物件。
C 程式設計思想 卷二 異常處理
關鍵字throw將導致一系列事情的發生 首先,它將建立程式所丟擲的物件的乙個拷貝。然後,包含throw表示式的函式返回了這個物件,即使該函式原先並未設計為返回這種物件型別。另外,異常發生之前建立的區域性物件被銷毀 呼叫物件的析構函式 乙個異常被丟擲以後,異常處理系統將按照在源 中出現的順序查詢最近的...
C 程式設計思想 卷二 防禦性程式設計
assert 巨集斷言定義在標頭檔案中 典型的assert 實現 ifdef ndebug define assert cond void 0 else void assertimpl const char const char long define assert cond cond void 0...
Adapter優化(二)通用ViewHolder
普通的viewholder類 class viewholder通用的話,肯定不能具體那些元件了,所以我們用sparsearray存放元件,這個容器類似於map,但是效率更高,鍵只能是integer,所以k id of view v view。再分析下getview 方法 1 獲取乙個viewhold...