# 26 Numerics library [numerics]

## 26.7 Numeric arrays [numarray]

### 26.7.2 Class template valarray[template.valarray]

#### 26.7.2.8 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; ```
Mandates: operator+= can be applied to operands of type T.
Preconditions: size() > 0 is true.
Returns: The sum of all the elements of the array.
If the array has length 1, 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; ```
Preconditions: size() > 0 is true.
Returns: The minimum value contained in *this.
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; ```
Preconditions: size() > 0 is true.
Returns: The maximum value contained in *this.
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 shift(int n) const; ```
Returns: A valarray of length size(), each of whose elements I is (*this)[I + n] if I + n is non-negative and less than size(), otherwise T().
[Note 1:
If element zero is taken as the leftmost element, a positive value of n shifts the elements left n places, with zero fill.
â€” end note]
[Example 1:
If the argument has the value -2, the first two elements of the result will be value-initialized; the third element of the result will be assigned the value of the first element of the argument; etc.
â€” end example]
```valarray cshift(int n) const; ```
Returns: A valarray 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 places.
```valarray apply(T func(T)) const; valarray apply(T func(const T&)) const; ```
Returns: A valarray whose length is size().
Each element of the returned array is assigned the value returned by applying the argument function to the corresponding element of *this.
```void resize(size_t sz, T c = T()); ```
Effects: 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.