# 26 Numerics library [numerics]

## 26.6 Numeric arrays [numarray]

### 26.6.2 Class template valarray[template.valarray]

#### 26.6.2.8valarray member functions [valarray.members]

``` void swap(valarray& v) noexcept; ```

Effects: *this obtains the value of v. v obtains the value of *this.

Complexity: Constant.

``` size_t size() const; ```

Returns: The number of elements in the array.

Complexity: Constant time.

``` T sum() const; ```

This function may only be instantiated for a type T to which operator+= can be applied. This function returns the sum of all the elements of the array.

If the array has length 0, the behavior is undefined. If the array has length 1, sum() returns the value of element 0. Otherwise, the returned value is calculated by applying operator+= to a copy of an element of the array and all other elements of the array in an unspecified order.

``` T min() const; ```

This function returns the minimum value contained in *this. The value returned for an array of length 0 is undefined. For an array of length 1, the value of element 0 is returned. For all other array lengths, the determination is made using operator<.

``` T max() const; ```

This function returns the maximum value contained in *this. The value returned for an array of length 0 is undefined. For an array of length 1, the value of element 0 is returned. For all other array lengths, the determination is made using operator<.

``` valarray<T> shift(int n) const; ```

This function returns an object of class valarray<T> of length size(), each of whose elements I is (*this)[I + n] if I + n is non-negative and less than size(), otherwise T(). Thus if element zero is taken as the leftmost element, a positive value of n shifts the elements left n places, with zero fill.

Example: If the argument has the value -2, the first two elements of the result will be value-initialized ([dcl.init]); the third element of the result will be assigned the value of the first element of the argument; etc.  — end example ] ``` valarray<T> cshift(int n) const; ```

This function returns an object of class valarray<T> of length size() that is a circular shift of *this. If element zero is taken as the leftmost element, a non-negative value of n shifts the elements circularly left n places and a negative value of n shifts the elements circularly right -n places.

``` valarray<T> apply(T func(T)) const; valarray<T> apply(T func(const T&)) const; ```

These functions return an array whose length is equal to the array. Each element of the returned array is assigned the value returned by applying the argument function to the corresponding element of the array.

``` void resize(size_t sz, T c = T()); ```

This member function changes the length of the *this array to sz and then assigns to each element the value of the second argument. Resizing invalidates all pointers and references to elements in the array.