一部の 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];
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 > > >;
だから私の質問は、
mda[x][y][z]
(1) という形式の操作が SV コードと同じ期待値を返すという意味で、上記は正しいですか?
(2)より良い、よりクリーンな方法はありますか?