在未指定维数的类中包含boost :: multi_array

时间:2013-12-13 12:56:47

标签: c++ boost boost-multi-array

我正在创建一个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类构造函数中指定的维数。

有任何建议或替代方案吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

为了结束这个问题,我添加了这个答案:

最后,我通过创建一个基于数组的自制容器来解决问题。最初它基于矢量,但我更喜欢通过确定尺寸数量和最大尺寸来进入阵列。在这种情况下,我认为这种方法比使用boost multi_array更好,因为我的容器实际上是一个平面数组,元素索引通过数学运算推广。

感谢您的回复。