首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将不同的模板类型放入一个向量中

要将不同的模板类型放入一个向量中,可以使用C++中的模板特化技术。具体步骤如下:

  1. 定义一个基类模板,表示向量中的元素类型。
  2. 为每种模板类型定义一个特化的子类,这些子类继承自基类模板。
  3. 将特化的子类对象存储在向量中。

下面是一个示例代码:

代码语言: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。我们将不同类型的元素存储在向量中,并通过基类模板的接口来访问它们。在这个例子中,我们使用了intfloatdouble三种类型的元素,但是可以根据需要添加更多的特化子类。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券