要将不同的模板类型放入一个向量中,可以使用C++中的模板特化技术。具体步骤如下:
下面是一个示例代码:
#include<iostream>
#include<vector>
// 定义基类模板
template<typename T>
class Element {
public:
virtual void print() = 0;
};
// 定义特化的子类
template<typename T>
class ElementImpl : public Element<T> {
public:
ElementImpl(const T& value) : m_value(value) {}
virtual void print() {
std::cout << m_value<< std::endl;
}
private:
T m_value;
};
// 定义向量类型
typedef std::vector<Element<int>*> Vector;
int main() {
// 将不同的模板类型放入向量中
Vector vec;
vec.push_back(new ElementImpl<int>(10));
vec.push_back(new ElementImpl<float>(3.14));
vec.push_back(new ElementImpl<double>(2.718));
// 遍历向量并打印元素
for (Vector::iterator it = vec.begin(); it != vec.end(); ++it) {
(*it)->print();
}
// 释放内存
for (Vector::iterator it = vec.begin(); it != vec.end(); ++it) {
delete *it;
}
return 0;
}
在这个示例中,我们定义了一个基类模板Element
和一个特化的子类ElementImpl
。我们将不同类型的元素存储在向量中,并通过基类模板的接口来访问它们。在这个例子中,我们使用了int
、float
和double
三种类型的元素,但是可以根据需要添加更多的特化子类。
领取专属 10元无门槛券
手把手带您无忧上云