我想存储某种距离矩阵(2D),其中每个条目都有一些选择(不同的坐标)。所以我想访问距离,例如 x_alt=3 的 x=1 和 y_alt=1 的 y=3,查看带有数组 [1][3][3][1] 的 4-dim 多数组。
需要注意的重要事项如下:对于外部数组的不同值,最内部的 2 个数组/向量的大小不同。
在我计算值的第一个初始化步骤之后,不再需要修改!
使用 stl-vectors 应该很容易做到这一点:
vector<vector<vector<vector<double> > > >`extended_distance_matrix;
我可以动态地迭代外部 2 维并根据需要填充内部 2 维的替代项(例如使用 push_back())。
问题:
- Boost.MultiArray 是否可以定义这种数据结构?如何?
- 使用 Boost.MultiArray 而不是嵌套向量是个好主意吗?性能(尤其是查找!(内存布局))?易于使用?
感谢您的任何意见!
萨沙
PS:boost 文档对我没有帮助。也许可以使用 multi_array_ref 将已经确定大小的数组放入整个 4D 结构中?
编辑: 目前我正在考虑另一种方法:将备选方案展平-> 一个更大的矩阵,其中包含备选方案之间的所有距离。然后我只需要计算每个节点的备选数量,建立前缀总和(描述矩阵位置/移位),然后可以分两步访问信息。
但我的问题仍然悬而未决。