Boost.MultiArray任意开始和结束索引

时间:2015-06-17 04:17:00

标签: c++ boost

我有一个看起来像这样的课程。目的是有一个任意的起点和终点,但是operator []映射到下限的索引0。

controler_name.coffee

我的问题是,是否有一种与Boost.MultiArray相同的方法可以为每个维度赋予其自己的任意起始和结束索引?

1 个答案:

答案 0 :(得分:1)

http://www.boost.org/doc/libs/1_58_0/libs/multi_array/doc/user.html#sec_base

  

设置阵列基础

     

在某些情况下,使用从零开始的数组可能会带来不便或尴尬。 Boost.MultiArray组件提供了两个用于更改数组基础的工具。可以使用extent_range类型向extent_gen构造函数指定一对范围值,以便设置基值。

     

实施例

typedef boost::multi_array<double, 3> array_type;
typedef boost::multi_array_types::extent_range range;
// OR typedef array_type::extent_range range;

array_type::extent_gen extents;

// dimension 0: 0-based
// dimension 1: 1-based
// dimension 2: -1 - based
array_type A(extents[2][range(1,4)][range(-1,3)]);
     

另一种方法是首先正常构造阵列然后重置基数。要将所有碱基设置为相同的值,请使用reindex成员函数,并为其传递一个新的索引值。