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