📄 valarray.html
字号:
stores a reference to an object <CODE>va</CODE> of class<CODE><A HREF="#valarray">valarray</A><Ty></CODE>,along with an object <CODE>sl</CODE> of class<CODE><A HREF="#slice">slice</A></CODE> whichdescribes the sequence of elements to select from the<CODE>valarray<Ty></CODE> object.</P><P>You construct a <CODE>slice_array<Ty></CODE> object onlyby writing an expression of the form<CODE><A HREF="#valarray::operator[]">va[sl]</A></CODE>.The member functions of class <CODE>slice_array</CODE> thenbehave like the corresponding function signatures definedfor <CODE>valarray<Ty></CODE>, except that only the sequenceof selected elements is affected.</P><P>The sequence consists of<CODE>sl.<A HREF="#slice::size">size</A>()</CODE>elements, where element <CODE>I</CODE> becomes the index<CODE>sl.<A HREF="#slice::start">start</A>() + I *sl.<A HREF="#slice::stride">stride</A>()</CODE> within <CODE>va</CODE>.For example:</P><PRE>// va[slice(2, 5, 3)] selects elements with// indices 2, 5, 8, 11, 14</PRE><H2><A NAME="sqrt"><CODE>sqrt</CODE></A></H2><PRE>template<class Ty> valarray<Ty> <B>sqrt</B>(const valarray<Ty>& left);</PRE><P>The template function returns an object of class<CODE><A HREF="#valarray">valarray</A><Ty></CODE>, each of whoseelements <CODE>I</CODE> is the square root of <CODE>left[I]</CODE>.</P><H2><A NAME="tan"><CODE>tan</CODE></A></H2><PRE>template<class Ty> valarray<Ty> <B>tan</B>(const valarray<Ty>& left);</PRE><P>The template function returns an object of class<CODE><A HREF="#valarray">valarray</A><Ty></CODE>, each of whoseelements <CODE>I</CODE> is the tangent of <CODE>left[I]</CODE>.</P><H2><A NAME="tanh"><CODE>tanh</CODE></A></H2><PRE>template<class Ty> valarray<Ty> <B>tanh</B>(const valarray<Ty>& left);</PRE><P>The template function returns an object of class<CODE><A HREF="#valarray">valarray</A><Ty></CODE>, each of whoseelements <CODE>I</CODE> is the hyperbolic tangent of <CODE>left[I]</CODE>.</P><H2><A NAME="valarray"><CODE>valarray</CODE></A></H2><HR><P><B><CODE><A HREF="#valarray::apply">apply</A>· <A HREF="#valarray::cshift">cshift</A>· <A HREF="#valarray::max">max</A>· <A HREF="#valarray::min">min</A>· <A HREF="#valarray::operator!">operator!</A>· <A HREF="#valarray::operator%=">operator%=</A>· <A HREF="#valarray::operator&=">operator&=</A>· <A HREF="#valarray::operator>>=">operator>>=</A>· <A HREF="#valarray::operator<<=">operator<<=</A>· <A HREF="#valarray::operator*=">operator*=</A>· <A HREF="#valarray::operator+">operator+</A>· <A HREF="#valarray::operator+=">operator+=</A>· <A HREF="#valarray::operator-">operator-</A>· <A HREF="#valarray::operator-=">operator-=</A>· <A HREF="#valarray::operator/=">operator/=</A>· <A HREF="#valarray::operator=">operator=</A>· <A HREF="#valarray::operator[]">operator[]</A>· <A HREF="#valarray::operator^=">operator^=</A>· <A HREF="#valarray::operator|=">operator|=</A>· <A HREF="#valarray::operator~">operator~</A>· <A HREF="#valarray::resize">resize</A>· <A HREF="#valarray::shift">shift</A>· <A HREF="#valarray::size">size</A>· <A HREF="#valarray::sum">sum</A>· <A HREF="#valarray::valarray">valarray</A>· <A HREF="#valarray::value_type">value_type</A></CODE></B></P><HR><PRE>template<class Ty> class <B>valarray</B> {public: typedef Ty <B><A HREF="#valarray::value_type">value_type</A></B>; <B><A HREF="#valarray::valarray">valarray</A></B>(); explicit <B><A HREF="#valarray::valarray">valarray</A></B>(size_t count); <B><A HREF="#valarray::valarray">valarray</A></B>(const Ty& val, size_t count)); <B><A HREF="#valarray::valarray">valarray</A></B>(const Ty *ptr, size_t count); <B><A HREF="#valarray::valarray">valarray</A></B>(const slice_array<Ty>& slicearr); <B><A HREF="#valarray::valarray">valarray</A></B>(const gslice_array<Ty>& gslicearr); <B><A HREF="#valarray::valarray">valarray</A></B>(const mask_array<Ty>& maskarr); <B><A HREF="#valarray::valarray">valarray</A></B>(const indirect_array<Ty>& indarr); valarray<Ty>& <B><A HREF="#valarray::operator=">operator=</A></B>(const valarray<Ty>& right); valarray<Ty>& <B><A HREF="#valarray::operator=">operator=</A></B>(const Ty& val); valarray<Ty>& <B><A HREF="#valarray::operator=">operator=</A></B>(const slice_array<Ty>& slicearr); valarray<Ty>& <B><A HREF="#valarray::operator=">operator=</A></B>(const gslice_array<Ty>& gslicearr); valarray<Ty>& <B><A HREF="#valarray::operator=">operator=</A></B>(const mask_array<Ty>& maskarr); valarray<Ty>& <B><A HREF="#valarray::operator=">operator=</A></B>(const indirect_array<Ty>& indarr); Ty& <B><A HREF="#valarray::operator[]">operator[]</A></B>(size_t off); slice_array<Ty> <B><A HREF="#valarray::operator[]">operator[]</A></B>(slice slicearr); gslice_array<Ty> <B><A HREF="#valarray::operator[]">operator[]</A></B>(const gslice& gslicearr); mask_array<Ty> <B><A HREF="#valarray::operator[]">operator[]</A></B>(const valarray<bool>& boolarr); indirect_array<Ty> <B><A HREF="#valarray::operator[]">operator[]</A></B>(const valarray<size_t>& indarr); Ty <B><A HREF="#valarray::operator[]">operator[]</A></B>(size_t off) const; valarray<Ty> <B><A HREF="#valarray::operator[]">operator[]</A></B>(slice slicearr) const; valarray<Ty> <B><A HREF="#valarray::operator[]">operator[]</A></B>(const gslice& gslicearr) const; valarray<Ty> <B><A HREF="#valarray::operator[]">operator[]</A></B>(const valarray<bool>& boolarr) const; valarray<Ty> <B><A HREF="#valarray::operator[]">operator[]</A></B>(const valarray<size_t>& indarr) const; valarray<Ty> <B><A HREF="#valarray::operator+">operator+</A></B>() const; valarray<Ty> <B><A HREF="#valarray::operator-">operator-</A></B>() const; valarray<Ty> <B><A HREF="#valarray::operator~">operator~</A></B>() const; valarray<bool> <B><A HREF="#valarray::operator!">operator!</A></B>() const; valarray<Ty>& <B><A HREF="#valarray::operator*=">operator*=</A></B>(const valarray<Ty>& right); valarray<Ty>& <B><A HREF="#valarray::operator*=">operator*=</A></B>(const Ty& right); valarray<Ty>& <B><A HREF="#valarray::operator/=">operator/=</A></B>(const valarray<Ty>& right); valarray<Ty>& <B><A HREF="#valarray::operator/=">operator/=</A></B>(const Ty& right); valarray<Ty>& <B><A HREF="#valarray::operator%=">operator%=</A></B>(const valarray<Ty>& right); valarray<Ty>& <B><A HREF="#valarray::operator%=">operator%=</A></B>(const Ty& right); valarray<Ty>& <B><A HREF="#valarray::operator+=">operator+=</A></B>(const valarray<Ty>& right); valarray<Ty>& <B><A HREF="#valarray::operator+=">operator+=</A></B>(const Ty& right); valarray<Ty>& <B><A HREF="#valarray::operator-=">operator-=</A></B>(const valarray<Ty>& right); valarray<Ty>& <B><A HREF="#valarray::operator-=">operator-=</A></B>(const Ty& right); valarray<Ty>& <B><A HREF="#valarray::operator^=">operator^=</A></B>(const valarray<Ty>& right); valarray<Ty>& <B><A HREF="#valarray::operator^=">operator^=</A></B>(const Ty& right); valarray<Ty>& <B><A HREF="#valarray::operator&=">operator&=</A></B>(const valarray<Ty>& right); valarray<Ty>& <B><A HREF="#valarray::operator&=">operator&=</A></B>(const Ty& right); valarray<Ty>& <B><A HREF="#valarray::operator|=">operator|=</A></B>(const valarray<Ty>& right); valarray<Ty>& <B><A HREF="#valarray::operator|=">operator|=</A></B>(const Ty& right); valarray<Ty>& <B><A HREF="#valarray::operator<<=">operator<<=</A></B>(const valarray<Ty>& right); valarray<Ty>& <B><A HREF="#valarray::operator<<=">operator<<=</A></B>(const Ty& right); valarray<Ty>& <B><A HREF="#valarray::operator>>=">operator>>=</A></B>(const valarray<Ty>& right); valarray<Ty>& <B><A HREF="#valarray::operator>>=">operator>>=</A></B>(const Ty& right); size_t <B><A HREF="#valarray::size">size</A></B>() const; Ty <B><A HREF="#valarray::sum">sum</A></B>() const; Ty <B><A HREF="#valarray::max">max</A></B>() const; Ty <B><A HREF="#valarray::min">min</A></B>() const; valarray<Ty> <B><A HREF="#valarray::shift">shift</A></B>(int count) const; valarray<Ty> <B><A HREF="#valarray::cshift">cshift</A></B>(int count) const; valarray<Ty> <B><A HREF="#valarray::apply">apply</A></B>(Ty func(Ty)) const; valarray<Ty> <B><A HREF="#valarray::apply">apply</A></B>(Ty func(const Ty&)) const; void <B><A HREF="#valarray::resize">resize</A></B>(size_t newsize); void <B><A HREF="#valarray::resize">resize</A></B>(size_t newsize, const Ty& val); };</PRE><P>The template class describes an object that controls avarying-length sequence of elements of type <CODE>Ty</CODE>.The sequence is stored as an array of <CODE>Ty</CODE>.It differs from template class<CODE><A HREF="vector.html#vector">vector</A></CODE> in two importantways:</P><UL><LI>It defines numerous arithmetic operations between correspondingelements of <CODE>valarray<Ty></CODE> objects of the sametype and length, such as <CODE>xarr = cos(yarr) + sin(zarr)</CODE>.</LI><LI>It defines a variety of interesting ways to subscript a<CODE>valarray<Ty></CODE> object, by overloading<CODE><A HREF="#valarray::operator[]">operator[]</A></CODE>.</LI></UL><P>An object of class <CODE>Ty</CODE>:</P><UL><LI>has a public default constructor, destructor,copy constructor, and assignment operator -- withconventional behavior</LI><LI>defines the arithmetic operators and math functions, as needed,that are defined for the floating-pointtypes -- with conventional behavior</LI></UL><P>In particular, no subtle differences may exist between copy constructionand default construction followed by assignment. And none of the operationson objects of class <CODE>Ty</CODE> may throw exceptions.</P><H3><A NAME="valarray::apply"><CODE>valarray::apply</CODE></A></H3><PRE>valarray<Ty> <B>apply</B>(Ty func(Ty)) const;valarray<Ty> <B>apply</B>(Ty func(const Ty&)) const;</PRE><P>The member function returns an object of class<CODE><A HREF="#valarray">valarray</A><Ty></CODE>, of length<CODE><A HREF="#valarray::size">size</A>()</CODE>, each of whoseelements <CODE>I</CODE> is <CODE>func((*this)[I])</CODE>.</P><H3><A NAME="valarray::cshift"><CODE>valarray::cshift</CODE></A></H3><PRE>valarray<Ty> <B>cshift</B>(int count) const;</PRE><P>The member function returns an object of class<CODE><A HREF="#valarray">valarray</A><Ty></CODE>, of length<CODE><A HREF="#valarray::size">size</A>()</CODE>, each of whoseelements <CODE>I</CODE> is <CODE>(*this)[(I + count) % size()]</CODE>.Thus, if element zero is taken as the leftmost element, a positivevalue of <CODE>count</CODE> shifts the elements circularly left <CODE>count</CODE>places.</P><H3><A NAME="valarray::max"><CODE>valarray::max</CODE></A></H3><PRE>Ty <B>max</B>() const;</PRE><P>The member function returns the value of the largest elementof <CODE>*this</CODE>, which must have nonzero length.If the length is greater than one, it compares valuesby applying <CODE>operator<</CODE>between pairs of corresponding elements of class <CODE>Ty</CODE>.</P><H3><A NAME="valarray::min"><CODE>valarray::min</CODE></A></H3><PRE>Ty <B>min</B>() const;</PRE><P>The member function returns the value of the smallest elementof <CODE>*this</CODE>, which must have nonzero length.If the length is greater than one, it compares valuesby applying <CODE>operator<</CODE>between pairs of elements of class <CODE>Ty</CODE>.</P><H3><A NAME="valarray::operator!"><CODE>valarray::operator!</CODE></A></H3><PRE>valarray<bool> <B>operator!</B>() const;</PRE><P>The member operator returns an object of class<CODE><A HREF="#valarray">valarray</A><bool></CODE>, of length<CODE><A HREF="#valarray::size">size</A>()</CODE>, each of whoseelements <CODE>I</CODE> is <CODE>!(*this)</CODE>.</P><H3><A NAME="valarray::operator%="><CODE>valarray::operator%=</CODE></A></H3><PRE>valarray<Ty>& <B>operator%=</B>(const valarray<Ty>& right);valarray<Ty>& <B>operator%=</B>(const Ty& right);</PRE><P>The member operator replaces each element <CODE>I</CODE>of <CODE>*this</CODE> with <CODE>(*this)[I] % right[I]</CODE>.It returns <CODE>*this</CODE>.</P><H3><A NAME="valarray::operator&="><CODE>valarray::operator&=</CODE></A></H3><PRE>valarray<Ty>& <B>operator&=</B>(const valarray<Ty>& right);valarray<Ty>& <B>operator&=</B>(const Ty& right);</PRE><P>The member operator replaces each element <CODE>I</CODE>of <CODE>*this</CODE> with <CODE>(*this)[I] & right[I]</CODE>.It returns <CODE>*this</CODE>.</P><H3><A NAME="valarray::operator>>="><CODE>valarray::operator>>=</CODE></A></H3><PRE>valarray<Ty>& <B>operator>>=</B>(const valarray<Ty>& right);valarray<Ty>& <B>operator>>=</B>(const Ty& right);</PRE><P>The member operator replaces each element <CODE>I</CODE>of <CODE>*this</CODE> with <CODE>(*this)[I] >> right[I]</CODE>.It returns <CODE>*this</CODE>.</P><H3><A NAME="valarray::operator<<="><CODE>valarray::operator<<=</CODE></A></H3><PRE>valarray<Ty>& <B>operator<<=</B>(const valarray<Ty>& right);valarray<Ty>& <B>operator<<=</B>(const Ty& right);</PRE><P>The member operator replaces each element <CODE>I</CODE>of <CODE>*this</CODE> with <CODE>(*this)[I] << right[I]</CODE>.It returns <CODE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -