STL 関数オブジェクトは、C での関数プログラミングをサポートします。関数オブジェクトは、動作を指定するために、operator() 演算子を実装することによって定義されます。これらのオブジェクトは、マッピング、フィルタリング、並べ替え操作に使用でき、再利用性、可読性、パフォーマンスが向上します。
C では、標準テンプレート ライブラリ (STL) が関数オブジェクトと呼ばれる特別なクラスを提供します。関数型プログラミング スタイルでコードを記述するために使用できます。関数オブジェクト クラスを使用すると、関数のように呼び出すことができるオブジェクトを作成でき、コードの再利用性と読みやすさを強力に制御できます。
関数オブジェクトは、operator()
演算子を実装することで定義できます。この演算子は、関数オブジェクトが呼び出されたときの動作を指定します。単純な関数オブジェクトの例を次に示します。
struct Add { int operator()(int a, int b) { return a + b; } };
関数オブジェクトを使用して関数プログラミング スタイルを実際に実装する方法を次に示します:
1 . マッピング操作
配列またはコンテナに対するマップ操作は、関数オブジェクトを使用して簡単に実行できます。たとえば、Add
関数オブジェクトを使用して、配列内の各要素に 1 を追加します:
int arr[] = {1, 2, 3, 4, 5}; transform(arr, arr + 5, arr, Add());
2。 Collection 要素のフィルタリングにも使用されます。たとえば、次の関数オブジェクトを使用して、配列内の大きい数値のみを保持します:
struct IsGreater { bool operator()(int n) { return n > 3; } }; vector<int> result; copy_if(arr, arr + 5, back_inserter(result), IsGreater());
3. 並べ替え操作
最後に、関数オブジェクトを使用して並べ替えることができます。特定の条件に基づいてコレクション要素を並べ替えます。たとえば、Add
関数オブジェクトを使用して配列を降順に並べ替えます。sort(arr, arr + 5, greater<int>());
利点
STL 関数オブジェクトを使用して関数プログラミング スタイルを実装する主な利点include:
コードの再利用性: 以上がSTL 関数オブジェクトを使用して関数プログラミング スタイルを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。