C++ 库 - <any>



C++17 中的<any> 头文件提供了一个类型安全的容器,用于存储任何类型的单个值,并允许以安全的方式检索它们。当在编译时无法确定变量的类型,或者函数需要接受多种类型的输入时,它非常有用。

它保存任何类型值的单个实例,并且值的类型存储在内部。它像一个类型擦除容器一样工作,可以保存不同类型的对象,只要这些类型是可复制构造的。但是,除非您执行特定的操作来提取或检查它,否则在运行时无法访问类型信息。

包含 <any> 头文件

要在您的 C++ 程序中包含 <any> 头文件,可以使用以下语法。

#include <any>

<any> 头文件的函数

以下是 <any> 头文件中所有函数的列表。

序号 函数和描述
1 operator=

赋值任何对象。

2 emplace

更改包含的对象,直接构造新对象。

3 reset

销毁包含的对象。

4 swap

交换两个 any 对象。

5 has_value

检查对象是否包含值。

6 type

返回包含值的 typeid。

确定值的类型

在下面的示例中,我们将使用 x 最初保存整数,然后重新赋值为保存字符串值,然后使用 type() 函数检查存储值的类型。

#include <iostream>
#include <any>
#include <string>
int main() {
   std::any x = 1;
   if (x.type() == typeid(int)) {
      std::cout << "Integer value: " << std::any_cast < int > (x) << std::endl;
   }
   x = std::string("Welcome");
   if (x.type() == typeid(std::string)) {
      std::cout << "String value: " << std::any_cast < std::string > (x) << std::endl;
   }
   return 0;
}

输出

以下是上述代码的输出:

Integer value: 1
String value: Welcome
广告