This header is part of thenumeric library.
Includes | ||
(C++11) | std::initializer_list class template[edit] | |
Classes | ||
Numeric arrays and array slices (class template) | ||
BLAS-like slice of a valarray: starting index, length, stride (class)[edit] | ||
proxy to a subset of a valarray after applying a slice (class template)[edit] | ||
generalized slice of a valarray: starting index, set of lengths, set of strides (class)[edit] | ||
proxy to a subset of a valarray after applying a gslice (class template)[edit] | ||
proxy to a subset of a valarray after applying a boolean maskoperator[] (class template)[edit] | ||
proxy to a subset of a valarray after applying indirectoperator[] (class template)[edit] | ||
Functions | ||
Operations | ||
(C++11) | specializes thestd::swap algorithm (function template)[edit] | |
(C++11) | overloadsstd::begin (function template)[edit] | |
(C++11) | specializesstd::end (function template)[edit] | |
applies binary operators to each element of two valarrays, or a valarray and a value (function template)[edit] | ||
compares two valarrays or a valarray with a value (function template)[edit] | ||
applies the functionabs to each element of valarray (function template)[edit] | ||
Exponential functions | ||
applies the functionstd::exp to each element of valarray (function template)[edit] | ||
applies the functionstd::log to each element of valarray (function template)[edit] | ||
applies the functionstd::log10 to each element of valarray (function template)[edit] | ||
Power functions | ||
applies the functionstd::pow to two valarrays or a valarray and a value (function template)[edit] | ||
applies the functionstd::sqrt to each element of valarray (function template)[edit] | ||
Trigonometric functions | ||
applies the functionstd::sin to each element of valarray (function template)[edit] | ||
applies the functionstd::cos to each element of valarray (function template)[edit] | ||
applies the functionstd::tan to each element of valarray (function template)[edit] | ||
applies the functionstd::asin to each element of valarray (function template)[edit] | ||
applies the functionstd::acos to each element of valarray (function template)[edit] | ||
applies the functionstd::atan to each element of valarray (function template)[edit] | ||
applies the functionstd::atan2 to a valarray and a value (function template)[edit] | ||
Hyperbolic functions | ||
applies the functionstd::sinh to each element of valarray (function template)[edit] | ||
applies the functionstd::cosh to each element of valarray (function template)[edit] | ||
applies the functionstd::tanh to each element of valarray (function template)[edit] |
#include <initializer_list> namespace std{template<class T>class valarray;// An array of type Tclass slice;// a BLAS-like slice out of an arraytemplate<class T>class slice_array;class gslice;// a generalized slice out of an arraytemplate<class T>class gslice_array;template<class T>class mask_array;// a masked arraytemplate<class T>class indirect_array;// an indirected array template<class T>void swap(valarray<T>&, valarray<T>&)noexcept; template<class T> valarray<T> operator*(const valarray<T>&,const valarray<T>&);template<class T> valarray<T> operator*(const valarray<T>&,consttypename valarray<T>::value_type&);template<class T> valarray<T> operator*(consttypename valarray<T>::value_type&,const valarray<T>&); template<class T> valarray<T> operator/(const valarray<T>&,const valarray<T>&);template<class T> valarray<T> operator/(const valarray<T>&,consttypename valarray<T>::value_type&);template<class T> valarray<T> operator/(consttypename valarray<T>::value_type&,const valarray<T>&); template<class T> valarray<T> operator%(const valarray<T>&,const valarray<T>&);template<class T> valarray<T> operator%(const valarray<T>&,consttypename valarray<T>::value_type&);template<class T> valarray<T> operator%(consttypename valarray<T>::value_type&,const valarray<T>&); template<class T> valarray<T> operator+(const valarray<T>&,const valarray<T>&);template<class T> valarray<T> operator+(const valarray<T>&,consttypename valarray<T>::value_type&);template<class T> valarray<T> operator+(consttypename valarray<T>::value_type&,const valarray<T>&); template<class T> valarray<T> operator-(const valarray<T>&,const valarray<T>&);template<class T> valarray<T> operator-(const valarray<T>&,consttypename valarray<T>::value_type&);template<class T> valarray<T> operator-(consttypename valarray<T>::value_type&,const valarray<T>&); template<class T> valarray<T> operator^(const valarray<T>&,const valarray<T>&);template<class T> valarray<T> operator^(const valarray<T>&,consttypename valarray<T>::value_type&);template<class T> valarray<T> operator^(consttypename valarray<T>::value_type&,const valarray<T>&); template<class T> valarray<T> operator&(const valarray<T>&,const valarray<T>&);template<class T> valarray<T> operator&(const valarray<T>&,consttypename valarray<T>::value_type&);template<class T> valarray<T> operator&(consttypename valarray<T>::value_type&,const valarray<T>&); template<class T> valarray<T> operator|(const valarray<T>&,const valarray<T>&);template<class T> valarray<T> operator|(const valarray<T>&,consttypename valarray<T>::value_type&);template<class T> valarray<T> operator|(consttypename valarray<T>::value_type&,const valarray<T>&); template<class T> valarray<T> operator<<(const valarray<T>&,const valarray<T>&);template<class T> valarray<T> operator<<(const valarray<T>&,consttypename valarray<T>::value_type&);template<class T> valarray<T> operator<<(consttypename valarray<T>::value_type&,const valarray<T>&); template<class T> valarray<T> operator>>(const valarray<T>&,const valarray<T>&);template<class T> valarray<T> operator>>(const valarray<T>&,consttypename valarray<T>::value_type&);template<class T> valarray<T> operator>>(consttypename valarray<T>::value_type&,const valarray<T>&); template<class T> valarray<bool> operator&&(const valarray<T>&,const valarray<T>&);template<class T> valarray<bool> operator&&(const valarray<T>&,consttypename valarray<T>::value_type&);template<class T> valarray<bool> operator&&(consttypename valarray<T>::value_type&,const valarray<T>&); template<class T> valarray<bool> operator||(const valarray<T>&,const valarray<T>&);template<class T> valarray<bool> operator||(const valarray<T>&,consttypename valarray<T>::value_type&);template<class T> valarray<bool> operator||(consttypename valarray<T>::value_type&,const valarray<T>&); template<class T> valarray<bool> operator==(const valarray<T>&,const valarray<T>&);template<class T> valarray<bool> operator==(const valarray<T>&,consttypename valarray<T>::value_type&);template<class T> valarray<bool> operator==(consttypename valarray<T>::value_type&,const valarray<T>&);template<class T> valarray<bool> operator!=(const valarray<T>&,const valarray<T>&);template<class T> valarray<bool> operator!=(const valarray<T>&,consttypename valarray<T>::value_type&);template<class T> valarray<bool> operator!=(consttypename valarray<T>::value_type&,const valarray<T>&); template<class T> valarray<bool> operator<(const valarray<T>&,const valarray<T>&);template<class T> valarray<bool> operator<(const valarray<T>&,consttypename valarray<T>::value_type&);template<class T> valarray<bool> operator<(consttypename valarray<T>::value_type&,const valarray<T>&);template<class T> valarray<bool> operator>(const valarray<T>&,const valarray<T>&);template<class T> valarray<bool> operator>(const valarray<T>&,consttypename valarray<T>::value_type&);template<class T> valarray<bool> operator>(consttypename valarray<T>::value_type&,const valarray<T>&);template<class T> valarray<bool> operator<=(const valarray<T>&,const valarray<T>&);template<class T> valarray<bool> operator<=(const valarray<T>&,consttypename valarray<T>::value_type&);template<class T> valarray<bool> operator<=(consttypename valarray<T>::value_type&,const valarray<T>&);template<class T> valarray<bool> operator>=(const valarray<T>&,const valarray<T>&);template<class T> valarray<bool> operator>=(const valarray<T>&,consttypename valarray<T>::value_type&);template<class T> valarray<bool> operator>=(consttypename valarray<T>::value_type&,const valarray<T>&); template<class T> valarray<T> abs(const valarray<T>&);template<class T> valarray<T> acos(const valarray<T>&);template<class T> valarray<T> asin(const valarray<T>&);template<class T> valarray<T> atan(const valarray<T>&); template<class T> valarray<T> atan2(const valarray<T>&,const valarray<T>&);template<class T> valarray<T> atan2(const valarray<T>&,consttypename valarray<T>::value_type&);template<class T> valarray<T> atan2(consttypename valarray<T>::value_type&,const valarray<T>&); template<class T> valarray<T> cos(const valarray<T>&);template<class T> valarray<T> cosh(const valarray<T>&);template<class T> valarray<T> exp(const valarray<T>&);template<class T> valarray<T> log(const valarray<T>&);template<class T> valarray<T> log10(const valarray<T>&); template<class T> valarray<T> pow(const valarray<T>&,const valarray<T>&);template<class T> valarray<T> pow(const valarray<T>&,consttypename valarray<T>::value_type&);template<class T> valarray<T> pow(consttypename valarray<T>::value_type&,const valarray<T>&); template<class T> valarray<T> sin(const valarray<T>&);template<class T> valarray<T> sinh(const valarray<T>&);template<class T> valarray<T> sqrt(const valarray<T>&);template<class T> valarray<T> tan(const valarray<T>&);template<class T> valarray<T> tanh(const valarray<T>&); template<class T>/* unspecified1 */ begin(valarray<T>& v);template<class T>/* unspecified2 */ begin(const valarray<T>& v);template<class T>/* unspecified1 */ end(valarray<T>& v);template<class T>/* unspecified2 */ end(const valarray<T>& v);}
namespace std{template<class T>class valarray{public:using value_type= T; // construct/destroy valarray();explicit valarray(size_t); valarray(const T&, size_t); valarray(const T*, size_t); valarray(const valarray&); valarray(valarray&&)noexcept; valarray(const slice_array<T>&); valarray(const gslice_array<T>&); valarray(const mask_array<T>&); valarray(const indirect_array<T>&); valarray(initializer_list<T>); ~valarray(); // assignment valarray& operator=(const valarray&); valarray& operator=(valarray&&)noexcept; valarray& operator=(initializer_list<T>); valarray& operator=(const T&); valarray& operator=(const slice_array<T>&); valarray& operator=(const gslice_array<T>&); valarray& operator=(const mask_array<T>&); valarray& operator=(const indirect_array<T>&); // element accessconst T& operator[](size_t)const; T& operator[](size_t); // subset operations valarray operator[](slice)const; slice_array<T> operator[](slice); valarray operator[](const gslice&)const; gslice_array<T> operator[](const gslice&); valarray operator[](const valarray<bool>&)const; mask_array<T> operator[](const valarray<bool>&); valarray operator[](const valarray<size_t>&)const; indirect_array<T> operator[](const valarray<size_t>&); // unary operators valarray operator+()const; valarray operator-()const; valarray operator~()const; valarray<bool> operator!()const; // compound assignment valarray& operator*=(const T&); valarray& operator/=(const T&); valarray& operator%=(const T&); valarray& operator+=(const T&); valarray& operator-=(const T&); valarray& operator^=(const T&); valarray& operator&=(const T&); valarray& operator|=(const T&); valarray& operator<<=(const T&); valarray& operator>>=(const T&); valarray& operator*=(const valarray&); valarray& operator/=(const valarray&); valarray& operator%=(const valarray&); valarray& operator+=(const valarray&); valarray& operator-=(const valarray&); valarray& operator^=(const valarray&); valarray& operator|=(const valarray&); valarray& operator&=(const valarray&); valarray& operator<<=(const valarray&); valarray& operator>>=(const valarray&); // member functionsvoid swap(valarray&)noexcept; size_t size()const; T sum()const; T min()const; T max()const; valarray shift(int)const; valarray cshift(int)const; valarray apply(T func(T))const; valarray apply(T func(const T&))const;void resize(size_t sz, T c= T());}; template<class T, size_t cnt> valarray(const T(&)[cnt], size_t)-> valarray<T>;}
namespace std{class slice{public: slice(); slice(size_t, size_t, size_t); size_t start()const; size_t size()const; size_t stride()const; friendbool operator==(const slice& x,const slice& y);};}
namespace std{template<class T>class slice_array{public:using value_type= T; 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; slice_array(const slice_array&); ~slice_array();const slice_array& operator=(const slice_array&)const;void operator=(const T&)const; slice_array()= delete;// as implied by declaring copy constructor above};}
namespace std{class gslice{public: gslice(); gslice(size_t s,const valarray<size_t>& l,const valarray<size_t>& d); size_t start()const; valarray<size_t> size()const; valarray<size_t> stride()const;};}
namespace std{template<class T>class gslice_array{public:using value_type= T; 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; gslice_array(const gslice_array&); ~gslice_array();const gslice_array& operator=(const gslice_array&)const;void operator=(const T&)const; gslice_array()= delete;// as implied by declaring copy constructor above};}
namespace std{template<class T>class mask_array{public:using value_type= T; 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; mask_array(const mask_array&); ~mask_array();const mask_array& operator=(const mask_array&)const;void operator=(const T&)const; mask_array()= delete;// as implied by declaring copy constructor above};}
namespace std{template<class T>class indirect_array{public:using value_type= T; 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; indirect_array(const indirect_array&); ~indirect_array();const indirect_array& operator=(const indirect_array&)const;void operator=(const T&)const; indirect_array()= delete;// as implied by declaring copy constructor above};}
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
LWG 125 | C++98 | the return type ofvalarray<T>::operator!() wasvalarray<T> in the synopsis | corrected tovalarray<bool> |