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