我正在將一些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