我正在将一些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];
我知道对于一维关联数组可以使用 map,对于二维数组可以使用嵌套的 map,而对于多维数组则可以采用类似的方法解决,但这会变得非常混乱。
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
或其他情况下的boost::tuple
。 - andre