Maison > développement back-end > C++ > Quels sont les rôles des bibliothèques de modèles et des bibliothèques génériques dans la programmation générique C++ ?

Quels sont les rôles des bibliothèques de modèles et des bibliothèques génériques dans la programmation générique C++ ?

王林
Libérer: 2024-04-24 16:54:02
original
995 Les gens l'ont consulté

Les bibliothèques de modèles et les bibliothèques génériques implémentent une programmation générique en permettant le paramétrage des types de données et en fournissant des modèles prédéfinis, améliorant ainsi la réutilisabilité et la flexibilité du code, notamment : Bibliothèque de modèles : fournissant un mécanisme de déclaration de modèle pour créer des données basées sur un type ou une fonction paramétré par type, tel que le conteneur de modèles std::vector. Bibliothèque générique : fournit des fonctions et des types de modèles prédéfinis qui effectuent des tâches courantes, telles que la fonction générique std::sort pour trier les éléments.

模板库和泛型库在 C++ 泛型编程中的作用?

Le rôle des bibliothèques de modèles et des bibliothèques génériques dans la programmation générique C++

Vue d'ensemble

La programmation générique en C++ permet le développement de code qui fonctionne pour différents types de données, améliorant ainsi la reproductibilité du code. la flexibilité. Les bibliothèques de modèles et les bibliothèques génériques sont des composants clés pour la mise en œuvre de la programmation générique.

Bibliothèque de modèles

La bibliothèque de modèles fournit un mécanisme pour déclarer des modèles, vous permettant de créer des types ou des fonctions paramétrés basés sur des types de données. Par exemple, std::vector est un conteneur de modèles qui accepte un paramètre de type pour stocker des éléments. std::vector 是一个模板容器,接受一个类型参数来存储元素。

代码示例:

#include <vector>

// 定义存储整数的模板向量
template <typename T>
using IntVector = std::vector<T>;

// 创建一个存储整数的向量
IntVector<int> myVector;
myVector.push_back(10);
Copier après la connexion

泛型库

泛型库提供预定义的模板函数和类型,可用于执行各种常见任务。例如,std::sort

Exemple de code :

#include <algorithm>

// 比较函数
int compare(const int& a, const int& b) {
  return a > b;
}

// 对向量进行降序排序
std::sort(myVector.begin(), myVector.end(), compare);
Copier après la connexion

Bibliothèque générique

Les bibliothèques génériques fournissent des fonctions et des types de modèles prédéfinis qui peuvent être utilisés pour effectuer une variété de tâches courantes. Par exemple, std::sort est une fonction générique qui accepte une fonction de comparaison pour trier les éléments.

Exemple de code :

🎜
A = [[1, 2], [3, 4]]
B = [[5, 6], [7, 8]]
C = A * B = [[19, 22], [43, 50]]
Copier après la connexion
🎜🎜Exemple pratique🎜🎜🎜Considérez le problème de multiplication matricielle suivant : 🎜
#include <vector>

// 矩阵相乘模板函数
template <typename T>
std::vector<std::vector<T>> matrixMultiply(const std::vector<std::vector<T>>& a, const std::vector<std::vector<T>>& b) {
  int m = a.size(), n = a[0].size(), p = b[0].size();
  std::vector<std::vector<T>> c(m, std::vector<T>(p, 0));

  for (int i = 0; i < m; i++) {
    for (int j = 0; j < p; j++) {
      for (int k = 0; k < n; k++) {
        c[i][j] += a[i][k] * b[k][j];
      }
    }
  }

  return c;
}

// 矩阵相乘实战
auto c = matrixMultiply(a, b);
Copier après la connexion
🎜En utilisant la programmation générique, nous pouvons créer une fonction de modèle pour effectuer une multiplication matricielle qui peut fonctionner sur n'importe quel type d'élément Work. 🎜rrreee

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal