stl原始碼剖析 詳細學習筆記 仿函式

2022-07-17 00:21:18 字數 2344 閱讀 9934

//---------------------------15/04/01----------------------------

//仿函式是為了演算法而誕生的,可以作為演算法的乙個引數,來自定義各種操作,比如比大小,返回bool值,對元素進行操作等

//雖然這些函式也能實現,但是如果配合配接器(adapter)可以產生更靈活的變化。

//為了使物件像函式一樣,就必須過載operator()

//unary_function

templateclassresult>

struct unary_function

;//binary_functione

//二元仿函式

template

class arg2, class result>

struct binary_functione

;//算術類仿函式

template

struct plus :

public binary_functione

};template

struct minus :

public binary_functione

};template

struct multiplies :

public binary_functione

};template

struct divides :

public binary_functione

};template

struct modulus :

public binary_functione

};template

struct negate:

public unary_function

};//證同元素,數值a與該元素做op操作會得到自己。加法的證同元素為0 乘法為1

template

inline t identity_element(plus)

;template

inline t identity_element(multiplies)

;//關係運算類仿函式

template

struct equal_to :

public binary_functionebool>

};template

struct not_equal_to :

public binary_functionebool>

};template

struct greater :

public binary_functionebool>

};template

struct less :

public binary_functionebool>

};template

struct greater_equal :

public binary_functionebool>

};template

struct less_equal :

public binary_functionebool>

};//邏輯類仿函式

template

struct logical_and :

public binary_functionebool>

};template

struct logical_or :

public binary_functionebool>

};template

struct logical_not :

public unary_functionbool>

};//證同函式,任何數通過此函式呼叫運算後返回原值。

template

struct identity :

public unary_function

};//選擇函式

接受pair,傳回第乙個元素

template

struct select1st :

public unary_functiontypename pair::first_type>

};template

struct select2nd :

public unary_functiontypename pair::second_type>

};//投射函式:傳回第一引數,忽略第二引數

templateclassarg2>

struct project1st :

public binary_functione

}templateclassarg2>

struct project2nd :

public binary_functione

}

STL原始碼剖析學習十八 仿函式

仿函式 又叫函式物件,可以達到 將整組操作當做演算法的引數 定義於標頭檔案 stl仿函式應該具有配接的能力 一般寫法 template class a private 呼叫方式 a 用class和struct都可以,注意class中必須要將過載 的函式寫在public內 stl不支援三元仿函式 定義...

《STL原始碼剖析學習筆記》

1 演算法泛化過程 首先是模板 適應不同型別 其次是迭代器 具有原生指標行為的類 最後是仿函式 行為類似函式指標,但更適合泛化 泛化的優點 個人總結 1 簡化程式,提高 的可重用性 2 提高了程式的通用性 3 提高了程式的可讀性 4 提高了安全性 函式指標及仿函式 首先說說函式指標,乙個程式可能需要...

《STL原始碼剖析》學習筆記

第二章 空間配置器 allocator 考慮到小型區塊可能造成的記憶體破碎問題,sgi設計了雙層級配置器。當配置區塊超過128bytes時,便呼叫第一級配置器,即直接使用malloc free sgi的第一級配置器的allocate 和realloc 都是在呼叫malloc 和realloc 不成功...