Perpustakaan templat dan perpustakaan generik melaksanakan pengaturcaraan generik dengan membenarkan parameterisasi jenis data dan menyediakan templat yang dipratentukan, meningkatkan kebolehgunaan semula kod dan fleksibiliti, termasuk: Pustaka templat: menyediakan mekanisme pengisytiharan templat untuk mencipta berasaskan data Jenis atau fungsi yang diparameterkan, seperti bekas templat std::vektor. Pustaka generik: Menyediakan fungsi dan jenis templat yang dipratentukan yang melaksanakan tugas biasa, seperti fungsi generik std::sort untuk menyusun elemen. Peranan pustaka templat dan perpustakaan generik dalam pengaturcaraan generik C++ fleksibiliti. Perpustakaan templat dan perpustakaan generik adalah komponen utama untuk melaksanakan pengaturcaraan generik.
Perpustakaan Templat
Perpustakaan templat menyediakan mekanisme untuk mengisytiharkan templat, membolehkan anda mencipta jenis atau fungsi berparameter berdasarkan jenis data. Contohnya, std::vector
ialah bekas templat yang menerima parameter jenis untuk menyimpan elemen.
Contoh Kod:
#include <vector> // 定义存储整数的模板向量 template <typename T> using IntVector = std::vector<T>; // 创建一个存储整数的向量 IntVector<int> myVector; myVector.push_back(10);
Perpustakaan Generik
Perpustakaan generik menyediakan fungsi dan jenis templat yang telah ditetapkan yang boleh digunakan untuk melaksanakan pelbagai tugas biasa. Contohnya, std::sort
ialah fungsi generik yang menerima fungsi perbandingan untuk mengisih elemen.
Contoh Kod: std::vector
是一个模板容器,接受一个类型参数来存储元素。
代码示例:
#include <algorithm> // 比较函数 int compare(const int& a, const int& b) { return a > b; } // 对向量进行降序排序 std::sort(myVector.begin(), myVector.end(), compare);
泛型库
泛型库提供预定义的模板函数和类型,可用于执行各种常见任务。例如,std::sort
A = [[1, 2], [3, 4]] B = [[5, 6], [7, 8]] C = A * B = [[19, 22], [43, 50]]
Contoh Praktikal
Pertimbangkan masalah pendaraban matriks berikut: #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);
Atas ialah kandungan terperinci Apakah peranan perpustakaan templat dan perpustakaan generik dalam pengaturcaraan generik C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!