[c++17标准库特性之新增STL特性] --- std::variant

std::variant介绍

std::variant 是 C++17 中引入的一个标准库类型,它提供了一种方式来存储不同类型的值,并在运行时根据需要选择其中之一。它类似于联合体(union),但具有更多的功能和类型安全性。

以下是 std::variant 的一些主要特点和用法:

  • std::variant 可以存储多个类型的值,并且它会自动处理类型转换和内存分配。在任何时候,只有一个值是有效的。
    可以使用 std::variant 的构造函数来创建一个包含某个特定类型值的变量。可以使用成员函数 index() 来获取当前存储的类型的索引。
  • 可以使用 std::variant 的成员函数 valueless_by_exception() 来检查变量是否不包含任何值,例如在构造函数抛出异常时。
  • 可以使用 std::variant 的 std::get 成员函数和 std::get_if 全局函数来访问存储在 std::variant 中的值。这些函数通过类型索引或类型标签来指定要访问的类型。如果要访问的类型不匹配,则会引发 std::bad_variant_access 异常。
  • 可以使用 std::visit 全局函数来访问 std::variant 中存储的值,该函数根据存储的值的类型自动选择调用哪个函数对象。std::visit 的参数是一个可调用对象和一个 std::variant 对象,它可以使用 lambda 表达式、函数指针或者函数对象作为可调用对象。
  • 可以使用 std::variant 的 std::holds_alternative 成员函数和 std::variant_alternative 类型别名模板来检查变量中是否存储了特定的类型,并且可以通过类型索引来访问 std::variant 中的特定类型。
  • 使用 std::variant 可以使代码更

猜你喜欢

转载自blog.csdn.net/weixin_42445727/article/details/130046553