<分区>
在搜索了一段时间后,我没有找到我的问题的答案,如果这个问题已经在其他地方得到回答,请提前致歉。
我正在寻找 C++ 中的多维数据结构,它不仅可以作为 N 维数组访问,还可以作为一维访问。
举个例子,假设一个简单的二维矩阵(它可以达到更高的维度,但在那种情况下,让我们坚持这个例子)。在大多数情况下,成员将以行-列-形式访问,例如矩阵[x][y]。在其他情况下,可能希望将所有成员作为单个列表访问,例如使用标准算法进行矩阵加法。
标准方法可能类似于 std::array<std::array<double, 4>, 4>
并另外编写一个迭代器,可以线性访问所有成员,也许还有一个额外的访问函数。
第二种方法是相反的 std::array<double, 16>
使用行-列形式的访问器,但在这种情况下返回整列变得很棘手。
或者也许它可以通过 boost MultiArray 实现,但我认为减小 MultiArray 的维度总是导致只获得 MultiArray 的切片。
我的问题归结为:标准库或一些知名库(如 boost)中是否已经有针对此的实现?如果不是,我是否遗漏了一点并且有比我写的方法更简单的方法?
编辑: 我并不是在寻找对所有值的唯一迭代,就像在提到的问题中那样。但是但是从有针对性的文档中我可以发现 MultiArray 可以作为 C 样式数组访问,这足以满足我的需要。然后可以关闭它,感谢所有答案