일부 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로, 그렇지 않으면'boost :: tuple'을 찾습니다. – andre
SystemVerilog에 익숙하지 않습니다. 위의 세 가지 저장된 객체 모두에 "typ_one"의 맵을 선언합니까? – Dennis
Dennis, 죄송합니다. 오류가 발생했습니다. SV 3-d 어레이의 구문을 수정했습니다. – Rich