下面是一个示例代码,演示了如何创建不同专业化的模板类的向量:
#include
#include
// 定义一个通用的模板类
template
class MyVector {
public:
void push_back(T item) {
vector.push_back(item);
}
void print() {
for (const auto& item : vector) {
std::cout << item << " ";
}
std::cout << std::endl;
}
private:
std::vector vector;
};
// 定义一个专业化的模板类,用于处理int类型的向量
template<>
class MyVector {
public:
void push_back(int item) {
vector.push_back(item * 2);
}
void print() {
for (const auto& item : vector) {
std::cout << item << " ";
}
std::cout << std::endl;
}
private:
std::vector vector;
};
int main() {
// 创建通用模板类的向量
MyVector myVector1;
myVector1.push_back(1.5);
myVector1.push_back(2.5);
myVector1.push_back(3.5);
myVector1.print();
// 创建专业化模板类的向量
MyVector myVector2;
myVector2.push_back(1);
myVector2.push_back(2);
myVector2.push_back(3);
myVector2.print();
return 0;
}
在上面的示例代码中,首先定义了一个通用的模板类MyVector
,它可以处理任意类型的向量。然后,使用template<>
语法定义了一个专业化的模板类MyVector
,用于处理int类型的向量。专业化的模板类可以对通用模板类进行特定类型的操作或提供特定的功能。
在main()
函数中,创建了一个通用模板类的向量myVector1
,并向其中添加了一些double类型的元素,并打印出来。然后,创建了一个专业化模板类的向量myVector2
,并向其中添加了一些int类型的元素,并打印出来。
输出结果为:
1.5 2.5 3.5
2 4 6
注意,这只是一个示例,实际使用时可以根据需要定义不同类型的模板类,并在其中实现特定的操作或提供特定的功能。