首页
学习
活动
专区
工具
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三种类型的元素,但是可以根据需要添加更多的特化子类。

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

相关·内容

6分33秒

048.go的空接口

9分12秒

034.go的类型定义和类型别名

9分54秒

057.errors.As函数

10分30秒

053.go的error入门

4分37秒

数据中心光模块中,并行光学和WDM波分光学技术是什么?

9分16秒

056.errors.Is函数

3分0秒

Burp Suite简介

6分9秒

054.go创建error的四种方式

9分2秒

044.go的接口入门

1分40秒

Elastic security - 端点威胁的即时响应:远程执行命令

1分32秒

最新数码印刷-数字印刷-个性化印刷工作流程-教程

1时30分

FPGA中AD数据采集卡设计

领券