C++之大统一数据结构:var.cpp(二)

本文介绍了C++中创建一个名为var的类,该类能够存储单个元素或数组,利用std::initializer_list实现简易数组初始化。文章详细讲解了如何初始化、读取和添加元素到var类中,特别是对于数组的处理,通过指针数组实现。同时,提出了如何使用new创建指针数组的问题,并展示了var类的printf功能,显示正确输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接上篇,要造这个var类,首先要搞明白它是如何能够既装得下单个元素又能装下一个数组,现在呢,就解决这个问题。先实现单个int型和数组的关系,继而实现float和数组的关系,继而实现数组中嵌套数组。

首先,有这么一个东西:std::initializer_list,这个是C11的一个特性,骚气无比,能实现一种非常简易的数组初始化方法。到底怎么用,这样

std::vector v = { 1, 2, 3, 4 };

也就是说,一个类可以被赋予一个数组了,甚至可以这样:

json array_not_object = json::array({ {“currency”, “USD”}, {“value”, 42.99} });

这么着就比较简单了,首先定义一个数据结构类型枚举变量:_vt,用来表示这是一个什么样的数据类型。

我们来看看这个类是如何初始化的,首先,如果只是单一结构变量,如int或者float,就把相应的元素赋值和设定枚举类型就行,但如果它是一个数组类型的呢?

首先,它接收的是一个initializer_list类型 ,而且这个类型还只是一个模板,因此它接收的是initializer_list类型,所有数据变量又都转成了var型,然后如果var型里面还是一个initializer_list类型,那么就再进行下一次展开,这样的话,是不会出现错误的。

但是,如何读取呢?理论上讲,我想直接用[]来进行读取,并且通过重载,可以实现花样非常多的重载,但是现在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值