当前位置: 首页 > news >正文

std::any详解

基础概念

std::any是一个可以存储任意类型的数据类型安全的容器,它的特点是主要是:

  1. 可以存储任意类型的单个值
  2. 在运行时保持类型安全
  3. 需要显示的类型转化才能取出值

依赖的头文件:#include <any>

基本用法

#include <any>
#include <iostream>
#include <string>

int main()
{
    //基本构造和赋值
    std::any a1;
    std::any a2 = 42;
    std::any a3 = std::string("hello");

    //使用make_any构造
    auto a3 = std::make_any<std::string>("world");
    
    //检查是否为空
    std::cout <<"是否为空:"<<std::boolalpha<<a1.has_value()<<std::endl;

    //获取存储值的类型信息
    std::cout <<"a2的类型信息:"<<a2.type().name()<<std::endl;

    //获取值
    int value = std::any_cast<int>(a2);  //必须使用any_cast<T>显式的转换
    std::cout <<"a2的值:"<<value<<std::endl;  

    return 0;

}

错误的用法

假设std::any存储的数据类型是整型,但是却通过std::any_cast<T>却强转为其它类型,那么就会抛出异常,请看下面的例子:

void error_example()
{
        try {
        std::any number = 42;
        
        // 错误的类型转换
        std::string str = std::any_cast<std::string>(number);
    }
    catch(const std::bad_any_cast& e) {
        std::cout << "类型转换失败: " << e.what() << "\n";
    }

}

使用建议

  1. 当需要存储未知类型的数据时使用
  2. 如果类型集合是已知的,考虑使用 std::variant
  3. 注意异常处理
  4. 合理使用类型检查和转换机制
http://www.dtcms.com/a/62308.html

相关文章:

  • Java实现死锁
  • 【沐渥科技】氮气柜日常如何维护?
  • nginx 打造高性能 API 网关(‌Building a High-Performance API Gateway with Nginx)
  • Deepin通过二进制方式升级部署高版本 Docker
  • 数据库系统概论(四)关系模型的数据结构及形象化
  • 【eNSP实战】交换机配置端口隔离
  • 软件IIC和硬件IIC的主要区别,用标准库举例!
  • wpf label 内容绑定界面不显示
  • MVCC实现原理
  • 【JavaWeb学习Day24】
  • 基于python下载ERA5小时尺度和月尺度的数据
  • 【Java开发指南 | 第三十四篇】IDEA没有Java Enterprise——解决方法
  • [从零开始学习JAVA] 新版本idea的数据库图形化界面
  • JVM RuntimeDataArea 成分
  • libwebsockets实现异步websocket客户端,服务端异常断开可重连
  • LangChain教程 - Agent -之 ZERO_SHOT_REACT_DESCRIPTION
  • Aliyun CTF 2025 web ezoj
  • 云原生容器编排:Kubernetes的架构演进与实践
  • python中time模块的常用方法及应用
  • 蓝桥杯2024年第十五届省赛真题-成绩统计
  • 深入探索 Rust 的高级 Traits
  • Unity使用UGUI制作无限滑动列表
  • BambuStudio学习笔记:Model
  • postgresql 15.2 用pgbackup搭建备库后,主从复制一直无法启动
  • 从0到1入门Docker
  • word毕业论文“et al.”替换为“等”——宏
  • 爱迪斯通科技携手北京晨光溢海参展2025年北京教育装备展
  • MySQL:MySQL库和表的基本操作
  • Vue Amazing UI插件推荐
  • 【二分算法】-- x的平⽅根(easy)