Maison >développement back-end >C++ >Comment concevoir des objets de fonction STL personnalisés pour améliorer la réutilisabilité du code ?
L'utilisation d'objets fonction STL peut améliorer la réutilisabilité, y compris les étapes suivantes : Définir l'interface de l'objet fonction (créer une classe et hériter de std::unary_function ou std::binary_function) Surcharger l'opérateur() pour définir le comportement de la fonction dans l'opérateur surchargé ( ) Utilisez des objets de fonction via des algorithmes STL (tels que std::transform)
Utilisez des objets de fonction STL pour améliorer la réutilisabilité du code
Les objets de fonction STL sont une classe appelable, qui permet de combiner la programmation fonctionnelle avec la programmation orientée objet . En encapsulant la logique du code dans des objets fonction, vous pouvez améliorer la réutilisabilité et l'encapsulation.
Étapes :
std::unary_function
ou std::binary_function
. Surchargez operator()
pour définir le comportement de la fonction. 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
Dans le operator()
surchargé, implémentez les fonctions requises.
std::transform
ou std::for_each
pour appliquer des objets fonction. 🎜🎜Exemple : 🎜🎜🎜Supposons que nous souhaitions créer un objet fonction pour calculer la longueur d'une chaîne : 🎜rrreee🎜Dans cet exemple, la classe StringLength
est un fonction Objet qui implémente la logique de calcul de la longueur d'une chaîne. Nous l'appliquons au vecteur de chaîne names
via std::transform
, en stockant la longueur calculée dans le vecteur lengths
. 🎜🎜En utilisant des objets de fonction personnalisés, nous pouvons réaliser la réutilisation du code et appliquer facilement la logique de calcul de la longueur des chaînes à différentes collections de chaînes. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!