C++ gslice_array 类
-
定义和用法
template <class T> gslice_array;
std::gslice_array 与广义gslice一起使用时,用作valarray下标运算符(operator [])返回的中间类型。它引用gslice在valarray对象中选择的元素,并重载赋值和复合赋值运算符,从而允许直接访问选择中的元素。该类型可转换为valarray(请参见valarray构造函数),从而产生一个包含所引用元素副本的新对象。 -
声明
C++ 98 C++ 11 获得此类型的对象作为对valarray::operator []的调用的返回值。 它们不能直接构造或复制。 声明为: 获得此类型的对象作为对valarray::operator []的调用的返回值。 它们不能默认构造,但可以复制。 声明为: template <class T> class gslice_array { public: typedef T value_type; void operator= (const valarray<T>&) const; void operator*= (const valarray<T>&) const; void operator/= (const valarray<T>&) const; void operator%= (const valarray<T>&) const; void operator+= (const valarray<T>&) const; void operator-= (const valarray<T>&) const; void operator^= (const valarray<T>&) const; void operator&= (const valarray<T>&) const; void operator|= (const valarray<T>&) const; void operator<<= (const valarray<T>&) const; void operator>>= (const valarray<T>&) const; void operator=(const T&); ~gslice_array(); private: gslice_array(); gslice_array(const gslice_array&); gslice_array& operator= (const gslice_array&); };
template <class T> class gslice_array { public: typedef T value_type; void operator= (const valarray<T>&) const; void operator*= (const valarray<T>&) const; void operator/= (const valarray<T>&) const; void operator%= (const valarray<T>&) const; void operator+= (const valarray<T>&) const; void operator-= (const valarray<T>&) const; void operator^= (const valarray<T>&) const; void operator&= (const valarray<T>&) const; void operator|= (const valarray<T>&) const; void operator<<= (const valarray<T>&) const; void operator>>= (const valarray<T>&) const; void operator=(const T&) const; gslice_array() = delete; gslice_array(const gslice_array&); const gslice_array& operator= (const gslice_array&) const; ~gslice_array(); };
-
示例
尝试一下// gslice_array example #include <iostream< // std::cout #include <cstddef< // std::size_t #include <valarray< // std::valarray, std::gslice int main () { std::valarray<int< foo (14); for (int i=0; i<14; ++i) foo[i]=i; std::size_t start=1; std::size_t lengths[]= {2,3}; std::size_t strides[]= {7,2}; std::gslice mygslice (start, std::valarray<std::size_t<(lengths,2), std::valarray<std::size_t<(strides,2)); foo[mygslice] = 0; std::cout << "foo:\n"; for (std::size_t n=0; n<foo.size(); n++) std::cout << ' ' << foo[n]; std::cout << '\n'; return 0; }
输出0 0 2 0 4 0 6 7 0 9 0 11 0 13
-
相关页面
slice_array Valarray切片选择(类模板) mask_array Valarray遮罩选择(类模板) indirect_array Valarray间接选择(类模板)