#include <variant>
时间: 2023-09-13 15:10:25 浏览: 92
#include <variant> 是一个 C++17 中引入的标准库头文件,它提供了一个通用的联合类型(union-like type)std::variant,它可以同时存储多个不同的类型的值。类似于 C++11 中引入的 std::tuple,但是不同之处在于 std::variant 可以在运行时切换存储的类型。
使用 std::variant 可以避免使用继承或指针来实现多态性,并且提供了更安全和更高效的方式来处理多种类型的数据。
以下是一个简单的示例代码,展示了如何使用 std::variant:
```cpp
#include <iostream>
#include <variant>
int main() {
std::variant<int, float, std::string> v;
v = 42;
std::cout << std::get<int>(v) << std::endl; // 输出:42
v = 3.14f;
std::cout << std::get<float>(v) << std::endl; // 输出:3.14
v = "Hello, World!";
std::cout << std::get<std::string>(v) << std::endl; // 输出:"Hello, World!"
return 0;
}
```
在这个示例中,std::variant 可以存储 int、float 和 std::string 这三种类型的值。我们可以使用 std::get 来获取存储在 std::variant 中的具体类型的值。通过给 std::get 传递相应的类型作为模板参数,我们可以安全地访问 std::variant 中存储的值。
当我们将新的值赋给 std::variant 时,它会自动替换旧的值,并在需要时调用相应类型的构造函数和析构函数。
希望这个简单的解释对你有帮助!如果你有其他问题,请随时提问。
阅读全文