我有一个看起来像这样的课程。目的是有一个任意的起点和终点,但是operator []映射到下限的索引0。
controler_name.coffee
我的问题是,是否有一种与Boost.MultiArray相同的方法可以为每个维度赋予其自己的任意起始和结束索引?
答案 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成员函数,并为其传递一个新的索引值。