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