【问题标题】:In a boost::multi_array, which is the type of a sub-array?在 boost::multi_array 中,子数组的类型是什么?
【发布时间】:2014-02-07 16:56:26
【问题描述】:

如果我有一个

boost::multi_array<int,2> myArray(boost::extents[10][10]);

以下是什么类型?

myArray[4]

我应该如何在函数接口中定义对它的引用?

int doSomething(xxxxxx& mySubArray, const int dim) {
    for (int i = 0; i < dim; i++) {
         std::cout << mySubArray[i] << std::endl;
    }
}

【问题讨论】:

  • 您正在创建一个 10x10 二维数组,然后尝试使用 '4' 对其进行索引 - 索引 (myArray[index]) 不应该是具有两个值的 boost::indices 吗?
  • @DavidDoria 这个问题的重点是了解仅使用第一个索引级别时获得的 subarray 是什么类型。例如,因为您想将子数组传递给函数。
  • 我明白了,所以 operator[] 给你一个“内部表示”(一个数组数组(数组......)),如果你给它一个整数,或者一个子网格,如果你给是boost::indices?

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


【解决方案1】:

来自documentationboost::multi_array&lt;int, 2&gt;::reference

对于NumDims == 2,这是boost::multi_array&lt;int, 2&gt;::template subarray&lt;1&gt;::type 类型,或者boost::array_view_gen&lt;boost::multi_array&lt;int, 2&gt;, 1&gt;::type。一旦数组视图的维数达到 0,就会得到一个元素引用(即int &amp;)。

【讨论】:

  • 我现在添加的示例函数也有用吗?如果有三个级别呢?
  • @Antonio 是的,这是通用代码。如果NumDims == 3,那么您的代码将尝试流出subarray&lt;1&gt;,并且可能会失败。我会更新的。
猜你喜欢
  • 2011-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
  • 1970-01-01
  • 2012-02-29
相关资源
最近更新 更多