0

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

有什么建议或替代方案吗?

非常感谢你!

4

1 回答 1

0

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

最后我通过创建一个基于数组的自制容器解决了这个问题。最初它是基于向量的,但我更喜欢通过确定维数和最大大小来访问数组。在这种情况下,我认为这种方法比使用 boost multi_array 更好,因为我的容器实际上是一个平面数组,并且元素索引是通过数学运算概括的。

谢谢您的回复。

于 2014-02-23T18:15:49.177 回答