gpt4 book ai didi

c++ - 如何在C++中实现多维关联数组?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:29:51 24 4
gpt4 key购买 nike

我正在将一些 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];

我知道对于一维关联数组,我可以使用映射,对于二维数组,我可以使用嵌套映射,我相信类似的方法可以解决多维数组问题,但它变得非常困惑。

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::map 示例将执行您想要的操作。

不幸的是,没有更简洁的方法,因为 C++ 没有像普通数组那样用于关联数组的特殊语法(不幸的是,它们是原始的“原始”数组,而不是像 Java/C# 中的数组对象)。

关于c++ - 如何在C++中实现多维关联数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13627748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com