我想使用单个数组或向量实现多维数组,可以像通常的多维数组一样访问它(例如: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(使用前将#替换为@)