⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 array-impl.h

📁 A C++ class library for scientific computing
💻 H
📖 第 1 页 / 共 5 页
字号:
        storage_(storage)    {        BZPRECONDITION(dataFirst != 0);        length_ = shape;        stride_ = stride;        calculateZeroOffset();        data_ += zeroOffset_;    }    /*     * Construct an array from an existing block of memory.     */    Array(T_numtype* restrict dataFirst, TinyVector<int, N_rank> shape,        preexistingMemoryPolicy deletionPolicy,        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())      : MemoryBlockReference<T_numtype>(product(shape), dataFirst,             deletionPolicy),        storage_(storage)    {        BZPRECONDITION(dataFirst != 0);        length_ = shape;        computeStrides();        data_ += zeroOffset_;        if (deletionPolicy == duplicateData)            reference(copy());    }    /*     * Construct an array from an existing block of memory, with a     * given set of strides.       */    Array(T_numtype* restrict dataFirst, TinyVector<int, N_rank> shape,        TinyVector<int, N_rank> stride,        preexistingMemoryPolicy deletionPolicy,        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())      : MemoryBlockReference<T_numtype>(product(shape), dataFirst,           deletionPolicy),        storage_(storage)    {        BZPRECONDITION(dataFirst != 0);        length_ = shape;        stride_ = stride;        calculateZeroOffset();        data_ += zeroOffset_;        if (deletionPolicy == duplicateData)            reference(copy());    }    /*     * This constructor takes an extent (length) vector and storage format.     */    Array(const TinyVector<int, N_rank>& extent,         GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())        : storage_(storage)    {        length_ = extent;        setupStorage(N_rank - 1);    }    /*     * This construct takes a vector of bases (lbounds) and a vector of     * extents.     */    Array(const TinyVector<int, N_rank>& lbounds,        const TinyVector<int, N_rank>& extent,        const GeneralArrayStorage<N_rank>& storage            = GeneralArrayStorage<N_rank>());    /*     * These constructors allow arbitrary bases (starting indices) to be set.     * e.g. Array<int,2> A(Range(10,20), Range(20,30))     * will create an 11x11 array whose indices are 10..20 and 20..30     */    Array(Range r0,         GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())        : storage_(storage)    {        BZPRECONDITION(r0.isAscendingContiguous());        length_[0] = r0.length();        storage_.setBase(0, r0.first());        setupStorage(0);    }    Array(Range r0, Range r1,        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())        : storage_(storage)    {        BZPRECONDITION(r0.isAscendingContiguous() &&             r1.isAscendingContiguous());        length_[0] = r0.length();        storage_.setBase(0, r0.first());        length_[1] = r1.length();        storage_.setBase(1, r1.first());        setupStorage(1);    }    Array(Range r0, Range r1, Range r2,        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())        : storage_(storage)    {        BZPRECONDITION(r0.isAscendingContiguous() &&            r1.isAscendingContiguous() && r2.isAscendingContiguous());        length_[0] = r0.length();        storage_.setBase(0, r0.first());        length_[1] = r1.length();        storage_.setBase(1, r1.first());        length_[2] = r2.length();        storage_.setBase(2, r2.first());        setupStorage(2);    }    Array(Range r0, Range r1, Range r2, Range r3,        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())        : storage_(storage)    {        BZPRECONDITION(r0.isAscendingContiguous() &&            r1.isAscendingContiguous() && r2.isAscendingContiguous()            && r3.isAscendingContiguous());        length_[0] = r0.length();        storage_.setBase(0, r0.first());        length_[1] = r1.length();        storage_.setBase(1, r1.first());        length_[2] = r2.length();        storage_.setBase(2, r2.first());        length_[3] = r3.length();        storage_.setBase(3, r3.first());        setupStorage(3);    }    Array(Range r0, Range r1, Range r2, Range r3, Range r4,        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())        : storage_(storage)    {        BZPRECONDITION(r0.isAscendingContiguous() &&            r1.isAscendingContiguous() && r2.isAscendingContiguous()            && r3.isAscendingContiguous() && r4.isAscendingContiguous());        length_[0] = r0.length();        storage_.setBase(0, r0.first());        length_[1] = r1.length();        storage_.setBase(1, r1.first());        length_[2] = r2.length();        storage_.setBase(2, r2.first());        length_[3] = r3.length();        storage_.setBase(3, r3.first());        length_[4] = r4.length();        storage_.setBase(4, r4.first());        setupStorage(4);    }    Array(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5,        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())        : storage_(storage)    {        BZPRECONDITION(r0.isAscendingContiguous() &&            r1.isAscendingContiguous() && r2.isAscendingContiguous()            && r3.isAscendingContiguous() && r4.isAscendingContiguous()            && r5.isAscendingContiguous());        length_[0] = r0.length();        storage_.setBase(0, r0.first());        length_[1] = r1.length();        storage_.setBase(1, r1.first());        length_[2] = r2.length();        storage_.setBase(2, r2.first());        length_[3] = r3.length();        storage_.setBase(3, r3.first());        length_[4] = r4.length();        storage_.setBase(4, r4.first());        length_[5] = r5.length();        storage_.setBase(5, r5.first());        setupStorage(5);    }    Array(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5,        Range r6,        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())        : storage_(storage)    {        BZPRECONDITION(r0.isAscendingContiguous() &&            r1.isAscendingContiguous() && r2.isAscendingContiguous()            && r3.isAscendingContiguous() && r4.isAscendingContiguous()            && r5.isAscendingContiguous() && r6.isAscendingContiguous());        length_[0] = r0.length();        storage_.setBase(0, r0.first());        length_[1] = r1.length();        storage_.setBase(1, r1.first());        length_[2] = r2.length();        storage_.setBase(2, r2.first());        length_[3] = r3.length();        storage_.setBase(3, r3.first());        length_[4] = r4.length();        storage_.setBase(4, r4.first());        length_[5] = r5.length();        storage_.setBase(5, r5.first());        length_[6] = r6.length();        storage_.setBase(6, r6.first());        setupStorage(6);    }    Array(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5,        Range r6, Range r7,        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())        : storage_(storage)    {        BZPRECONDITION(r0.isAscendingContiguous() &&            r1.isAscendingContiguous() && r2.isAscendingContiguous()            && r3.isAscendingContiguous() && r4.isAscendingContiguous()            && r5.isAscendingContiguous() && r6.isAscendingContiguous()            && r7.isAscendingContiguous());        length_[0] = r0.length();        storage_.setBase(0, r0.first());        length_[1] = r1.length();        storage_.setBase(1, r1.first());        length_[2] = r2.length();        storage_.setBase(2, r2.first());        length_[3] = r3.length();        storage_.setBase(3, r3.first());        length_[4] = r4.length();        storage_.setBase(4, r4.first());        length_[5] = r5.length();        storage_.setBase(5, r5.first());        length_[6] = r6.length();        storage_.setBase(6, r6.first());        length_[7] = r7.length();        storage_.setBase(7, r7.first());        setupStorage(7);    }    Array(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5,        Range r6, Range r7, Range r8,        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())        : storage_(storage)    {        BZPRECONDITION(r0.isAscendingContiguous() &&            r1.isAscendingContiguous() && r2.isAscendingContiguous()            && r3.isAscendingContiguous() && r4.isAscendingContiguous()            && r5.isAscendingContiguous() && r6.isAscendingContiguous()            && r7.isAscendingContiguous() && r8.isAscendingContiguous());        length_[0] = r0.length();        storage_.setBase(0, r0.first());        length_[1] = r1.length();        storage_.setBase(1, r1.first());        length_[2] = r2.length();        storage_.setBase(2, r2.first());        length_[3] = r3.length();        storage_.setBase(3, r3.first());        length_[4] = r4.length();        storage_.setBase(4, r4.first());        length_[5] = r5.length();        storage_.setBase(5, r5.first());        length_[6] = r6.length();        storage_.setBase(6, r6.first());        length_[7] = r7.length();        storage_.setBase(7, r7.first());        length_[8] = r8.length();        storage_.setBase(8, r8.first());        setupStorage(8);    }    Array(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5,        Range r6, Range r7, Range r8, Range r9,        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())        : storage_(storage)    {        BZPRECONDITION(r0.isAscendingContiguous() &&            r1.isAscendingContiguous() && r2.isAscendingContiguous()            && r3.isAscendingContiguous() && r4.isAscendingContiguous()            && r5.isAscendingContiguous() && r6.isAscendingContiguous()            && r7.isAscendingContiguous() && r8.isAscendingContiguous()            && r9.isAscendingContiguous());        length_[0] = r0.length();        storage_.setBase(0, r0.first());        length_[1] = r1.length();        storage_.setBase(1, r1.first());        length_[2] = r2.length();        storage_.setBase(2, r2.first());        length_[3] = r3.length();        storage_.setBase(3, r3.first());        length_[4] = r4.length();        storage_.setBase(4, r4.first());        length_[5] = r5.length();        storage_.setBase(5, r5.first());        length_[6] = r6.length();        storage_.setBase(6, r6.first());        length_[7] = r7.length();        storage_.setBase(7, r7.first());        length_[8] = r8.length();        storage_.setBase(8, r8.first());        length_[9] = r9.length();        storage_.setBase(9, r9.first());        setupStorage(9);    }    Array(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5,        Range r6, Range r7, Range r8, Range r9, Range r10,        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())        : storage_(storage)    {        BZPRECONDITION(r0.isAscendingContiguous() &&            r1.isAscendingContiguous() && r2.isAscendingContiguous()            && r3.isAscendingContiguous() && r4.isAscendingContiguous()            && r5.isAscendingContiguous() && r6.isAscendingContiguous()            && r7.isAscendingContiguous() && r8.isAscendingContiguous()            && r9.isAscendingContiguous() && r10.isAscendingContiguous());        length_[0] = r0.length();        storage_.setBase(0, r0.first());        length_[1] = r1.length();        storage_.setBase(1, r1.first());        length_[2] = r2.length();        storage_.setBase(2, r2.first());        length_[3] = r3.length();        storage_.setBase(3, r3.first());        length_[4] = r4.length();        storage_.setBase(4, r4.first());        length_[5] = r5.length();        storage_.setBase(5, r5.first());        length_[6] = r6.length();        storage_.setBase(6, r6.first());        length_[7] = r7.length();        storage_.setBase(7, r7.first());        length_[8] = r8.length();        storage_.setBase(8, r8.first());        length_[9] = r9.length();        storage_.setBase(9, r9.first());        length_[10] = r10.length();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -