Files
2025-10-25 03:02:53 +03:00

4.7 KiB
Raw Permalink Blame History

[template.valarray.overview]

29 Numerics library [numerics]

29.6 Numeric arrays [numarray]

29.6.2 Class template valarray [template.valarray]

29.6.2.1 Overview [template.valarray.overview]

🔗

namespace std {template class valarray {public:using value_type = T; // [valarray.cons], 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(); // [valarray.assign], 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&); // [valarray.access], element accessconst T& operator const; T& operator; // [valarray.sub], 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<size_t>&) const; indirect_array operator[](const valarray<size_t>&); // [valarray.unary], unary operators valarray operator+() const; valarray operator-() const; valarray operator() const; valarray operator!() const; // [valarray.cassign], 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&); // [valarray.members], 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;}

1

#

The class templatevalarray is a one-dimensional smart array, with elements numbered sequentially from zero.

It is a representation of the mathematical concept of an ordered set of values.

For convenience, an object of type valarray is referred to as an “array” throughout the remainder of [numarray].

The illusion of higher dimensionality may be produced by the familiar idiom of computed indices, together with the powerful subsetting capabilities provided by the generalized subscript operators.248

248)248)

The intent is to specify an array template that has the minimum functionality necessary to address aliasing ambiguities and the proliferation of temporary objects.

Thus, thevalarray template is neither a matrix class nor a field class.

However, it is a very useful building block for designing such classes.