STL 関数オブジェクトを使用すると、次の手順を含む再利用性が向上します。 関数オブジェクト インターフェイスを定義します (クラスを作成し、std::unary_function または std::binary_function から継承します)。 オーバーロードされた関数の動作を定義するために、operator() をオーバーロードします。 Operator() に必要な関数を実装し、STL アルゴリズム (std::transform など) を通じて関数オブジェクトを使用します。
STL 関数オブジェクトを使用してコードの再利用性を向上させます
#STL 関数オブジェクトは、関数型プログラミングとオブジェクト指向プログラミングを組み合わせることを可能にする呼び出し可能なクラスです。コード ロジックを関数オブジェクトにカプセル化すると、再利用性とカプセル化が向上します。ステップ:
std::binary_function
。 operator()
をオーバーロードして関数の動作を定義します。
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 中国語 Web サイトの他の関連記事を参照してください。