C++的大统一数据结构: var.cpp(2)
发布时间
阅读量:
阅读量
接上篇,要创建这个var类,首先需要明确它是如何同时支持存储单个元素和数组结构的,现在就来解决这个问题。首先实现单个int类型与数组之间的关系,然后逐步扩展至float类型以及数组中嵌套数组的情况。
首先,有一个非常有用的工具:std::initializer_list,这是C++11引入的一个特性,用起来非常方便,能够实现一种简洁的数组初始化方式。具体使用方法如下:
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类型,则继续展开处理,这
全部评论 (0)
还没有任何评论哟~
