Maison >développement back-end >C++ >Comment utiliser les modèles de classe dans les modèles de fonctions C++ ?

Comment utiliser les modèles de classe dans les modèles de fonctions C++ ?

WBOY
WBOYoriginal
2024-04-15 12:48:01490parcourir

C++ 函数模板中的类模板是如何使用的?

Modèles de classe dans les modèles de fonctions C++

Les modèles de fonctions C++ connaissent les modèles de classe et les utilisent comme types de paramètres. Cela vous permet de créer des fonctions génériques qui fonctionnent avec une variété de types et de structures de données.

Syntaxe

template<typename T>
void func(const T& arg1, const T2& arg2, ...);

où :

  • T est le modèle de type du paramètre de fonction. T 是函数参数的类型模板。
  • arg1, arg2 及后续参数是函数的实际参数。

实战案例

考虑一个打印任何类型的一对值的函数:

template <typename T1, typename T2>
void print_pair(const T1& a, const T2& b) {
  std::cout << a << " " << b << std::endl;
}

我们可以将这个函数模板应用于不同的类型组合:

int main() {
  print_pair(1, 2.5);  // 打印整数和浮点数
  print_pair("Hello", "World");  // 打印字符串
  return 0;
}

在第一个示例中,T1 被推导为 intT2 被推导为 double。在第二个示例中,T1T2 都被推导为 std::string

arg1, arg2 et les paramètres suivants sont les paramètres réels de la fonction.

Exemple pratique

    Considérons une fonction qui imprime une paire de valeurs de n'importe quel type :
  • rrreee Nous pouvons appliquer ce modèle de fonction à différentes combinaisons de types : rrreee
  • Dans le premier exemple, T1 se déduit de int, et T2 se déduit de double. Dans le deuxième exemple, T1 et T2 sont déduits de std::string.
  • Avantages
  • L'utilisation de modèles de fonctions à partir de modèles de classe présente les avantages suivants :
🎜Réutilisabilité du code : 🎜Pas besoin d'écrire plusieurs fonctions pour chaque type de données. 🎜🎜🎜Universalité : 🎜La fonction peut être appliquée à tout type de données qui répond aux exigences du modèle de type. 🎜🎜🎜Améliorez la lisibilité du code : 🎜Réduisez le code en double et améliorez la lisibilité et la maintenabilité du code. 🎜🎜

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn