我正在将一些 SystemVerilog 移植到 SystemC/C++ 并且遇到了多维关联数组的问题。考虑在 SV 中声明这个数组。
// assume typ_one, typ_two, typ_three are struct or enum types
typ_one mda[typ_two][typ_two][typ_three];
我知道一维关联数组可以使用映射,二维数组可以使用嵌套映射,我相信类似的方法可以解决多维数组,但它会变得非常混乱。
typ_one mda[typ_two];
map< typ_two, typ_one >;
typ_one mda[typ_two][typ_two];
map< typ_two, map< typ_two, typ_one > >;
typ_one mda[typ_two][typ_two][typ_three];
map< typ_two, map< typ_two, map< typ_three, typ_one > > >;
所以我的问题是,
(1) 上述是否正确,从某种意义上说,形式的操作mda[x][y][z]
将返回与 SV 代码相同的预期值?
(2) 有没有更好、更清洁的方法?