我正在创建一个gridcell类,它基本上是一个多元素的单元格。我希望这个gridcell有任意数量的维度。这意味着在boost :: multiarray变量的声明中,我无法指定模板的第二个参数。具体来说,我的代码如下:
#include "cell.h"
#include <iostream>
#include <vector>
#include <boost/multi_array.hpp>
class GridCell {
public:
GridCell(); // Default constructor not used.
GridCell(const std::vector<int> dims, const float leafsize);
virtual ~GridCell();
friend std::ostream& operator << (std::ostream & os, const GridCell & c);
private:
std::vector<int> dims_; // Vector containing the size of each dimension.
float leafsize_; // It is assumed that the cells in the grid are cubic.
boost::multi_array<Cell,ndims> * grid;
};
具体来说,boost :: multi_array * grid;我希望在Gridcell类构造函数中指定的维数。
有任何建议或替代方案吗?
非常感谢!
答案 0 :(得分:0)
为了结束这个问题,我添加了这个答案:
最后,我通过创建一个基于数组的自制容器来解决问题。最初它基于矢量,但我更喜欢通过确定尺寸数量和最大尺寸来进入阵列。在这种情况下,我认为这种方法比使用boost multi_array更好,因为我的容器实际上是一个平面数组,元素索引通过数学运算推广。
感谢您的回复。