购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1.11 多维数组的声明和使用,哪种方式更合适呢?

一般我们建议多维数组的直接声明不超过3个维度(例如, int arr_fix_d1[2][3][4] )。在声明多维数组时,可以伴随有rand属性,或将数组类型声明为动态数组等常见操作。

如果是多维动态数组,一种简单的方法是直接声明多维动态数组。在要求随机属性时,可以在约束中对多维数组的每个维度进行约束。

对于复杂的结构,可以先使用结构体来封装,再进行逐级嵌套,而在上层约束中对整个结构体构成的多维数组进行约束。如果不仅数据成员复杂,而且每一级的数据成员之间也有较复杂的约束,那么可以先使用类来进行数据封装,并在该层次中声明约束,而后进行逐层封装。

关键词:

multi-dimension,array,class,struct

避坑指南:

对于通过类来逐层封装多维数组的情况,不但要注意在句柄数组前使用rand来描述,还要考虑在每一级通过函数post_randomize()对动态数组的句柄元素进行对应的实例创建和句柄复制。

上面这一步很重要,因为上层类的随机化只会随机化数组的大小,而不会创建下层类的实例。要实现这一目的,可以通过post_randomize()函数来完成(其伴随着对randomize()函数的调用)。

参考代码: sv_multi_dimension_array.sv

阅读手记: SkhB2R6XMTHa9N64dJR7TVh7a1afUclywZ0z+6KI3rBgVw96sA7GRUfwTuog6U4B

点击中间区域
呼出菜单
上一章
目录
下一章
×