slice_array

一个内部的辅助类模板,通过提供由 valarray 的切分定义的子集阵列之间的操作来支持 slice 对象。

语法

template <class Type>
class slice_array : public slice {
public:
    typedef Type value_type;
    void operator=(const valarray<Type>& x) const;
    void operator=(const Type& x) const;
    void operator*=(const valarray<Type>& x) const;
    void operator/=(const valarray<Type>& x) const;
    void operator%=(const valarray<Type>& x) const;
    void operator+=(const valarray<Type>& x) const;
    void operator-=(const valarray<Type>& x) const;
    void operator^=(const valarray<Type>& x) const;
    void operator&=(const valarray<Type>& x) const;
    void operator|=(const valarray<Type>& x) const;
    void operator<<=(const valarray<Type>& x) const;
    void operator>>=(const valarray<Type>& x) const;
    // The rest is private or implementation defined
}

备注

该类描述的对象将存储对 valarray<Type> 类的对象以及 slice 类的对象的引用,它描述了要从 valarray<Type> 对象中选择的元素序列。

该类模板是由某些 valarray 运算间接创建的,无法直接在程序中使用。 slice 下标运算符使用的内部辅助类模板:

slice_array<Type> valarray<Type>::operator[]( slice )

只能通过为 valarray va 的切分 sl 编写 va[sl] 形式的表达式来构造 slice_array<Type> 对象。 然后 slice_array 类的成员函数的行为方式就类似于为 valarray<Type> 定义的对应的函数签名,只不过仅所选的元素的序列受到影响。 slice_array 控制的序列由 slice 构造函数的三个参数定义,即 slice 中第一个元素的索引、元素数量以及元素之间的距离。 slice_arrayva[slice(2, 5, 3)]索引为 2、5、8、11 和 14 的va选定元素声明的切口valarrayva。 若要过程有效,索引必须有效。

示例

有关如何声明和使用 slice_array 的示例,请参阅 slice::slice 的示例。

要求

标头:<valarray>

命名空间std

另请参阅

C++ 标准库中的线程安全