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

C++如何创建异构容器

C++中创建异构容器的方法有多种,以下是其中几种常见的方法:

  1. 使用std::variant:std::variant是C++17引入的一个模板类,可以容纳多个不同类型的对象。通过指定可能的类型列表,可以创建一个异构容器,例如:
代码语言:cpp
复制
#include <variant>
#include <iostream>
#include <string>

int main() {
    std::variant<int, double, std::string> myVariant;
    myVariant = 42; // 存储int类型
    std::cout << std::get<int>(myVariant) << std::endl; // 输出:42

    myVariant = 3.14; // 存储double类型
    std::cout << std::get<double>(myVariant) << std::endl; // 输出:3.14

    myVariant = "Hello"; // 存储std::string类型
    std::cout << std::get<std::string>(myVariant) << std::endl; // 输出:Hello

    return 0;
}
  1. 使用std::any:std::any是C++17引入的另一个模板类,可以容纳任意类型的对象。通过将对象存储在std::any中,可以创建一个异构容器,例如:
代码语言:cpp
复制
#include <any>
#include <iostream>
#include <string>

int main() {
    std::any myAny;
    myAny = 42; // 存储int类型
    std::cout << std::any_cast<int>(myAny) << std::endl; // 输出:42

    myAny = 3.14; // 存储double类型
    std::cout << std::any_cast<double>(myAny) << std::endl; // 输出:3.14

    myAny = "Hello"; // 存储const char*类型
    std::cout << std::any_cast<const char*>(myAny) << std::endl; // 输出:Hello

    return 0;
}
  1. 使用自定义基类和多态:通过创建一个基类,然后派生出不同类型的子类,可以使用多态来实现异构容器。例如:
代码语言:cpp
复制
#include <iostream>
#include <vector>
#include <memory>

class Base {
public:
    virtual void print() const = 0;
};

class Derived1 : public Base {
public:
    void print() const override {
        std::cout << "Derived1" << std::endl;
    }
};

class Derived2 : public Base {
public:
    void print() const override {
        std::cout << "Derived2" << std::endl;
    }
};

int main() {
    std::vector<std::unique_ptr<Base>> myContainer;
    myContainer.push_back(std::make_unique<Derived1>());
    myContainer.push_back(std::make_unique<Derived2>());

    for (const auto& item : myContainer) {
        item->print();
    }

    return 0;
}

这些方法都可以用于创建异构容器,具体选择哪种方法取决于实际需求和使用场景。

腾讯云相关产品和产品介绍链接地址:

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

相关·内容

领券