相关疑难解决方法(0)

与尺寸无关的循环over :: multi_array?

假设我有一个N维boost :: multi_array(为了简单起见,类型为int),其中N在编译时已知但可以变化(即,是非类型模板参数).让我们假设所有尺寸都具有相同的尺寸m.

typedef boost::multi_array<int, N> tDataArray;
boost::array<tDataArray::index, N> shape;
shape.fill(m);
tDataArray A(shape);
Run Code Online (Sandbox Code Playgroud)

现在我想循环所有条目A,例如打印它们.如果N是2,例如我想我会写这样的东西

  boost::array<tDataArray::index, 2> index;
  for ( int i = 0; i < m; i++ )
  {
    for ( int j = 0; j < m; j++ )
    {
      index = {{ i, j }};
      cout << A ( index ) << endl;
    }
  }
Run Code Online (Sandbox Code Playgroud)

我已经使用索引对象来访问元素,因为我认为这比[] -operator更灵活.

但是如何在不知道尺寸数量的情况下编写这个N.有没有内置的方式?multi_array的文档对于存在哪种类型的迭代器等不是很清楚.或者我是否必须使用自定义指针,计算指针指针等自定义方法?如果是这样 - 任何建议这样的算法是什么样的?

c++ algorithm boost multidimensional-array

6
推荐指数
1
解决办法
2349
查看次数

Boost :: multi_array循环

我看过这篇文章,讲述了如何使用该boost::multi_array::origin()函数循环非基于零的数组,但这只创建了一个循环.

如何遍历a的每个维度multi_array,例如:

for(index i = <origin of dim 1>; ...) {
   for(index j = <origin of dim 2>; ...) {
      for(index k = <origin of dim 3>; ...) {
         myArray[i][j][k] = <something>;
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

给定一个上下界都未知的数组?

c++ boost boost-multi-array

4
推荐指数
1
解决办法
1983
查看次数