//---------------------------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 不成功...