STL原始碼剖析 仿函式(函式物件)

2021-10-01 05:10:27 字數 2524 閱讀 8779

7.1 仿函式概觀

功能分類

7.2 可配接的關鍵

為了能夠擁有配接能力,每乙個仿函式必須定義自己的響應型別。這些型別是為了讓配接器能夠取出,獲得仿函式的某些資訊。

7.4 算術類仿函式

加法:plus

template struct plus:public binary_function

};

減法:minus

template struct minus:public binary_function

};

乘法:multiplies

tmeplatestruct muliplies:public binary_function

};

除法:divides

tmeplatestruct divides:public binary_function

};

模取:modulus

tmeplatestruct modulus:public binary_function

};

否定:negate

tmeplatestruct negate:public unary_function

};

證同元素

所謂「運算op的證同元素」,意思是數值a若與該元素做op運算,會得到a自己。例如加法的證同元素是0,任何元素加上0都是自己本身。乘法的證同元素是1,任何元素乘1都為元素本身。

7.4 關係運算類仿函式

等於:equal_to

templatestruct equal_to:public binary_function

}

templatestruct not_equal_to:public binary_function

}

templatestruct greater:public binary_function

}

templatestruct greater_equal:public binary_function

}

templatestruct less:public binary_function

}

templatestruct less_equal:public binary_function

}

邏輯運算子仿函式

邏輯運算and:logical_and

templatestruct logical_and:public binary_function

}

邏輯運算or:logical_or

templatestruct logical_or:public binary_function

}

邏輯運算not:logical_not

templatestruct logical_not:public unary_function

}

證同(identity)、選擇(select)、投射(project)

//證同函式。任何數值通過此函式後,不會有任何改變

//此式運用於,用來指定rb-tree所需的keyofvalue op

//set元素鍵值即實值,所以採用identity

template struct identity : public unary_function

}//選擇函式:接收乙個pair,返回其第一元素

//此式運用於,用來指定rb-tree所需的keyofvalue op

//由於map係以pair元素的第一元素為其鍵值,所以採用select1st

template struct select1st : public unary_function

}//選擇函式:接收乙個pair,傳回其第二元素

//sgi stl未運用此式

template struct select2nd : public unary_function

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

//sgi stl未運用此式

templatestruct project1st : public binary_function

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

//sgi stl未運用此式

templatestruct project2nd : public binary_function

}

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

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

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

15 04 01 仿函式是為了演算法而誕生的,可以作為演算法的乙個引數,來自定義各種操作,比如比大小,返回bool值,對元素進行操作等 雖然這些函式也能實現,但是如果配合配接器 adapter 可以產生更靈活的變化。為了使物件像函式一樣,就必須過載operator unary function te...

stl 仿函式 函式物件

定義 stl原始碼剖析 仿函式其實上就是乙個 行為類似函式 的物件。即主體是物件,只是使用起來像乙個函式。傳遞函式指標 templatebool compare to const t x,const t y templatevoid print compare t fun int main 傳遞的是...