我正在将一些SystemVerilog移植到SystemC/C++,并且遇到了多维关联数组的问题。考虑在SV中声明这个数组。如何在C++中实现多维关联数组?
// assume typ_one, typ_two, typ_three are struct or enum types
typ_one mda[typ_two][typ_two][typ_three];
我知道与1-d关联数组我可以用一张地图,并与2-d阵列的嵌套地图,我相信类似的方法可以解决多维数组,但它变得非常混乱。
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)有更好,更清洁的方法吗?
考虑的元组'的std :: tuple'为C++ 11或'提振:: tuple'否则。 – andre
我对SystemVerilog不熟悉,上面是否向所有三个存储对象声明了一个“typ_one”映射? – Dennis
丹尼斯,对不起,这是一个错误,我修正了SV 3-d数组的语法 – Rich