SystemVerilog中相互“嵌套”的队列和动态数组
在SystemVerilog中为了实现对于数组的动态操作引入了队列和动态数组,两种数据结构都能够根据需要动态的控制数组的大小,可以存储的数据类型也十分丰富,那么如果想实现队列和动态数组之间的相互存储应该如何实现呢?希迈纳将示例实现队列和数组之间的相互存储。
1、队列中的元素为动态数组
【示例】
【仿真结果】
在上述示例中,通过typedef定义了自定义string类型的动态数组CHINA,然后声明了一个队列qarr,其中元素类型为CHINA。因为CHINA是动态数组,所以可以通过’{}的方式对其进行初始化。又因为qarr的每个元素类型为CHINA,所以可以将实例中声明并且初始化的动态数组变量通过队列的各种方法放入队列中(示例中使用了push_front),从而实现了一种“数组元素长短不同”的“多维数组”。然后使用了嵌套foreach循环遍历了“多维数组的每个元素”。
2、动态数组中的元素为队列
【示例】
【仿真结果】
仿真结果同上例。
示例中,通过typedef定义了自定义string类型的队列CHINA,然后声明了一个动态数组qarr,其中元素类型为CHINA。因为CHINA是队列,所以可以通过{}的方式对其进行初始化。又因为qarr的每个元素类型为CHINA,所以可以将实例中声明并且初始化的队列变量通过’{}的方法存储在动态数组中,从而实现了一种“数组元素长短不同”的“多维数组”。然后使用了嵌套foreach循环遍历了“多维数组的每个元素”。
上述示例中其实都是通过typedef简化了复杂的数据结构,然后使用简化的自定义数据类型再声明其他的数据结构,从而间接的实现了复杂数据结构互为成员。
示例中动态数组和队列实际上都属于一种特殊类型的数组,所以上例中数据存储结构也很相似,如下图所示。
本文示例是以队列和动态数组为例进行说明,对于其他数据结构也可以采用类似的方法实现相互嵌套。
觉得有收获,求点赞,转发,谢谢~
本文首发于微信公众号【硅芯思见】,欢迎大家来玩~
#C/C++##读书笔记#