1. 函数模板(通用求和)
cpp
运行
#include <iostream>
using namespace std;
// 泛型函数模板,任意类型都能用
template <typename T>
T add(T a, T b)
{
return a + b;
}
int main()
{
// 同一份代码,支持 int、double
cout << add(10, 20) << endl;
cout << add(3.14, 2.56) << endl;
return 0;
}
2. 类模板(通用容器栈)
cpp
运行
#include <iostream>
using namespace std;
// 泛型类模板
template <class T>
class Stack
{
private:
T arr[100];
int top = 0;
public:
void push(T val) { arr[top++] = val; }
T pop() { return arr[--top]; }
};
int main()
{
// 实例化 int栈、string栈
Stack<int> intStack;
intStack.push(666);
cout << intStack.pop() << endl;
Stack<string> strStack;
strStack.push("C++泛型编程");
cout << strStack.pop() << endl;
return 0;
}
3. STL 泛型实战(最常用)
cpp
运行
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
// 泛型容器 vector
vector<int> v = {5, 2, 9, 1};
// 泛型算法 sort
sort(v.begin(), v.end());
for (auto x : v)
cout << x << " ";
return 0;
}
一句话总结
C++ 靠模板 实现泛型,一套代码适配所有类型 ,编译期生成专属代码,无性能损耗、类型安全,STL 就是泛型编程的落地代表作。