使用STL 函數物件可提高可重複使用性,包含以下步驟:定義函數物件介面(建立類別並繼承自std::unary_function 或std::binary_function)重載operator() 以定義函數行為在重載的operator() 中實作所需的功能透過STL 演算法(如std::transform)使用函數物件
使用STL 函數物件來提高程式碼可重複使用性
STL 函數物件是一種可呼叫的類,它允許將函數式程式設計與物件導向程式設計結合。透過將程式碼邏輯封裝在函數物件中,可以提高可重複使用性和封裝性。
步驟:
std::unary_function
或std::binary_function
。重載 operator()
以定義函數行為。 operator()
中,實作所需的函數。 std::transform
或 std::for_each
這樣的 STL 演算法來應用函數物件。 範例:
假設我們想要建立一個函數物件來計算字串的長度:
class StringLength { public: int operator()(const std::string& str) { return str.length(); } }; int main() { std::vector<std::string> names = { "John", "Mary", "Bob" }; std::vector<int> lengths; std::transform(names.begin(), names.end(), std::back_inserter(lengths), StringLength()); for (int length : lengths) { std::cout << length << " "; // 输出:4 4 3 } std::cout << "\n"; return 0; }
在這個範例中, StringLength
類別是函數對象,實作了計算字串長度的邏輯。我們透過 std::transform
將它套用到字串向量 names
上,將計算的長度儲存到 lengths
向量中。
透過使用自訂函數對象,我們可以實現程式碼重用,輕鬆地將計算字串長度的邏輯套用到不同的字串集合。
以上是如何設計自訂的 STL 函數物件來提高程式碼的可重用性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!