Standard library header - cppreference.com (original) (raw)
This header is part of the numeric library.
[edit] Synopsis
#include namespace std { template class valarray; // An array of type T class slice; // a BLAS-like slice out of an array template class slice_array; class gslice; // a generalized slice out of an array template class gslice_array; template class mask_array; // a masked array template class indirect_array; // an indirected array template void swap(valarray&, valarray&) noexcept; template valarray operator* (const valarray&, const valarray&); template valarray operator* (const valarray&, const typename valarray::value_type&); template valarray operator* (const typename valarray::value_type&, const valarray&); template valarray operator/ (const valarray&, const valarray&); template valarray operator/ (const valarray&, const typename valarray::value_type&); template valarray operator/ (const typename valarray::value_type&, const valarray&); template valarray operator% (const valarray&, const valarray&); template valarray operator% (const valarray&, const typename valarray::value_type&); template valarray operator% (const typename valarray::value_type&, const valarray&); template valarray operator+ (const valarray&, const valarray&); template valarray operator+ (const valarray&, const typename valarray::value_type&); template valarray operator+ (const typename valarray::value_type&, const valarray&); template valarray operator- (const valarray&, const valarray&); template valarray operator- (const valarray&, const typename valarray::value_type&); template valarray operator- (const typename valarray::value_type&, const valarray&); template valarray operator^ (const valarray&, const valarray&); template valarray operator^ (const valarray&, const typename valarray::value_type&); template valarray operator^ (const typename valarray::value_type&, const valarray&); template valarray operator& (const valarray&, const valarray&); template valarray operator& (const valarray&, const typename valarray::value_type&); template valarray operator& (const typename valarray::value_type&, const valarray&); template valarray operator| (const valarray&, const valarray&); template valarray operator| (const valarray&, const typename valarray::value_type&); template valarray operator| (const typename valarray::value_type&, const valarray&); template valarray operator<<(const valarray&, const valarray&); template valarray operator<<(const valarray&, const typename valarray::value_type&); template valarray operator<<(const typename valarray::value_type&, const valarray&); template valarray operator>>(const valarray&, const valarray&); template valarray operator>>(const valarray&, const typename valarray::value_type&); template valarray operator>>(const typename valarray::value_type&, const valarray&); template valarray operator&&(const valarray&, const valarray&); template valarray operator&&(const valarray&, const typename valarray::value_type&); template valarray operator&&(const typename valarray::value_type&, const valarray&); template valarray operator||(const valarray&, const valarray&); template valarray operator||(const valarray&, const typename valarray::value_type&); template valarray operator||(const typename valarray::value_type&, const valarray&); template valarray operator==(const valarray&, const valarray&); template valarray operator==(const valarray&, const typename valarray::value_type&); template valarray operator==(const typename valarray::value_type&, const valarray&); template valarray operator!=(const valarray&, const valarray&); template valarray operator!=(const valarray&, const typename valarray::value_type&); template valarray operator!=(const typename valarray::value_type&, const valarray&); template valarray operator< (const valarray&, const valarray&); template valarray operator< (const valarray&, const typename valarray::value_type&); template valarray operator< (const typename valarray::value_type&, const valarray&); template valarray operator> (const valarray&, const valarray&); template valarray operator> (const valarray&, const typename valarray::value_type&); template valarray operator> (const typename valarray::value_type&, const valarray&); template valarray operator<=(const valarray&, const valarray&); template valarray operator<=(const valarray&, const typename valarray::value_type&); template valarray operator<=(const typename valarray::value_type&, const valarray&); template valarray operator>=(const valarray&, const valarray&); template valarray operator>=(const valarray&, const typename valarray::value_type&); template valarray operator>=(const typename valarray::value_type&, const valarray&); template valarray abs (const valarray&); template valarray acos (const valarray&); template valarray asin (const valarray&); template valarray atan (const valarray&); template valarray atan2(const valarray&, const valarray&); template valarray atan2(const valarray&, const typename valarray::value_type&); template valarray atan2(const typename valarray::value_type&, const valarray&); template valarray cos (const valarray&); template valarray cosh (const valarray&); template valarray exp (const valarray&); template valarray log (const valarray&); template valarray log10(const valarray&); template valarray pow(const valarray&, const valarray&); template valarray pow(const valarray&, const typename valarray::value_type&); template valarray pow(const typename valarray::value_type&, const valarray&); template valarray sin (const valarray&); template valarray sinh (const valarray&); template valarray sqrt (const valarray&); template valarray tan (const valarray&); template valarray tanh (const valarray&); template /* unspecified1 / begin(valarray& v); template / unspecified2 / begin(const valarray& v); template / unspecified1 / end(valarray& v); template / unspecified2 */ end(const valarray& v); }
[edit] Class template std::valarray
namespace std {
template 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&);
valarray(const gslice_array&);
valarray(const mask_array&);
valarray(const indirect_array&);
valarray(initializer_list);
valarray();
// assignment
valarray& operator=(const valarray&);
valarray& operator=(valarray&&) noexcept;
valarray& operator=(initializer_list);
valarray& operator=(const T&);
valarray& operator=(const slice_array&);
valarray& operator=(const gslice_array&);
valarray& operator=(const mask_array&);
valarray& operator=(const indirect_array&);
// element access
const T& operator const;
T& operator;
// subset operations
valarray operator const;
slice_array operator;
valarray operator[](const gslice&) const;
gslice_array operator[](const gslice&);
valarray operator[](const valarray&) const;
mask_array operator[](const valarray&);
valarray operator[](const valarray&) const;
indirect_array operator[](const valarray&);
// unary operators
valarray operator+() const;
valarray operator-() const;
valarray operator() const;
valarray 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 functions
void 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;
}
[edit] Class std::slice
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; friend bool operator==(const slice& x, const slice& y); }; }
[edit] Class template std::slice_array
namespace std { template class slice_array { public: using value_type = T; void operator= (const valarray&) const; void operator*= (const valarray&) const; void operator/= (const valarray&) const; void operator%= (const valarray&) const; void operator+= (const valarray&) const; void operator-= (const valarray&) const; void operator^= (const valarray&) const; void operator&= (const valarray&) const; void operator|= (const valarray&) const; void operator<<=(const valarray&) const; void operator>>=(const valarray&) 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 }; }
[edit] Class std::gslice
namespace std { class gslice { public: gslice(); gslice(size_t s, const valarray& l, const valarray& d); size_t start() const; valarray size() const; valarray stride() const; }; }
[edit] Class template std::gslice_array
namespace std { template class gslice_array { public: using value_type = T; void operator= (const valarray&) const; void operator*= (const valarray&) const; void operator/= (const valarray&) const; void operator%= (const valarray&) const; void operator+= (const valarray&) const; void operator-= (const valarray&) const; void operator^= (const valarray&) const; void operator&= (const valarray&) const; void operator|= (const valarray&) const; void operator<<=(const valarray&) const; void operator>>=(const valarray&) 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 }; }
[edit] Class template std::mask_array
namespace std { template class mask_array { public: using value_type = T; void operator= (const valarray&) const; void operator*= (const valarray&) const; void operator/= (const valarray&) const; void operator%= (const valarray&) const; void operator+= (const valarray&) const; void operator-= (const valarray&) const; void operator^= (const valarray&) const; void operator&= (const valarray&) const; void operator|= (const valarray&) const; void operator<<=(const valarray&) const; void operator>>=(const valarray&) 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 }; }
[edit] Class template std::indirect_array
namespace std { template class indirect_array { public: using value_type = T; void operator= (const valarray&) const; void operator*= (const valarray&) const; void operator/= (const valarray&) const; void operator%= (const valarray&) const; void operator+= (const valarray&) const; void operator-= (const valarray&) const; void operator^= (const valarray&) const; void operator&= (const valarray&) const; void operator|= (const valarray&) const; void operator<<=(const valarray&) const; void operator>>=(const valarray&) 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 }; }
[edit] Defect reports
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 of valarray::operator!()was valarray<T> in the synopsis | corrected to valarray<bool> |