用数组或向量实现多维数组

2024-05-16

我想使用单个数组或向量实现多维数组,可以像通常的多维数组一样访问它(例如:a[1][2][3])。 我陷入困境的是如何实施[ ]操作员。如果数组的维数为 1,则 a[1] 应该返回位于索引 1 处的元素。但是如果维数大于一怎么办?对于嵌套向量,例如 3 维向量,vec[1]将返回vector<vector<some type> >.

我尝试实现自己的多维数组的原因是我在编译时不知道数组的维度。尺寸实际上取决于某些条件。实际上数组的最大维度是3,所以我可以定义三个不同的向量,但我个人认为这不是正确的选择。


operator[]只能采用一个参数。

最好的解决方案是使用operator()反而。

如果你绝对想使用operator[]那么你可以让它返回一个特定于维度的类型的代理对象,在该代理对象上operator[]可以再次应用,依此类推。


这是一个常见问题,在 C++ FAQ 中得到了解答“如何为 Matrix 类创建下标运算符?” http://www.parashift.com/c++-faq/matrix-subscript-op.html(该链接是常见问题解答的主要英文版本)。

在提问之前先查阅常见问题解答通常是个好主意。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用数组或向量实现多维数组 的相关文章

随机推荐