##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::valarray

From cppreference.com
< cpp‎ | numeric

Defined in header `<valarray>` |  |
template< class T > class valarray; |  |

std::valarray is the class for representing and manipulating arrays of values. It supports element-wise mathematical operations and various forms of generalized subscript operators, slicing and indirect access.

### [edit] Notes

std::valarray and helper classes are defined to be free of certain forms of aliasing, thus allowing operations on these classes to be optimized similar to the effect of the keyword `restrict` in the C programming language. In addition, functions and operators that take `valarray` arguments are allowed to return proxy objects to make it possible for the compiler to optimize an expression such as v1 = a*v2 + v3; as a single loop that executes v1[i] = a*v2[i] + v3[i]; avoiding any temporaries or multiple passes. However, expression templates make the same optimization technique available for any C++ container, and the majority of numeric libraries prefer expression templates to valarrays for flexibility. Some C++ standard library implementations use expression templates to implement efficient operations on `std::valarray` (e.g. GNU libstdc++ and LLVM libc++). Only rarely are valarrays optimized any further, as in e.g. Intel Parallel Studio.

### [edit] Member types

Member type | Definition
`value_type` | `T`

The following limitations are imposed on the value type:

- `T` cannot be a reference
- `T` cannot be cv-qualified
- If `T` is a class, it

  - does not overload operator&
  - has no pure virtual member functions (is not abstract)
  - has a public default constructor
  - has a public copy constructor T::T(const T&)
  - has a public destructor
  - has a public assignment operator T& T::operator=(const T&) or T& T::operator=(T)
  - default constructor followed by assignment has the same effect as copy constructor
  - destructor followed by copy constructor has the same effect as assignment

- No operation on `T` may throw exceptions

### [edit] Member functions

(constructor) | constructs new numeric array (public member function) [edit]
(destructor) | destructs the numeric array (public member function) [edit]
operator= | assigns the contents (public member function) [edit]
operator[] | get/set valarray element, slice, or mask (public member function) [edit]
operator+operator-operator~operator! | applies a unary arithmetic operator to each element of the valarray (public member function) [edit]
operator+=operator-=operator*=operator/=operator%=operator&=operator|=operator^=operator<<=operator>>= | applies compound assignment operator to each element of the valarray (public member function) [edit]
swap | swaps with another valarray (public member function) [edit]
size | returns the size of valarray (public member function) [edit]
resize | changes the size of valarray (public member function) [edit]
sum | calculates the sum of all elements (public member function) [edit]
min | returns the smallest element (public member function) [edit]
max | returns the largest element (public member function) [edit]
shift | zero-filling shift the elements of the valarray (public member function) [edit]
cshift | circular shift of the elements of the valarray (public member function) [edit]
apply | applies a function to every element of a valarray (public member function) [edit]

### [edit] Non-member functions

std::swap(std::valarray) (C++11) | specializes the std::swap() algorithm (function template) [edit]
std::begin(std::valarray) (C++11) | specializes std::begin (function template) [edit]
std::end(std::valarray) (C++11) | specializes std::end (function template) [edit]
operator+operator-operator*operator/operator%operator&operator|operator^operator<<operator>>operator&&operator|| | applies binary operators to each element of two valarrays, or a valarray and a value (function template) [edit]
operator==operator!=operator<operator<=operator>operator>= | compares two valarrays or a valarray with a value (function template) [edit]
abs(std::valarray) | applies the function std::abs to each element of valarray (function template) [edit]
##### Exponential functions
exp(std::valarray) | applies the function std::exp to each element of valarray (function template) [edit]
log(std::valarray) | applies the function std::log to each element of valarray (function template) [edit]
log10(std::valarray) | applies the function std::log10 to each element of valarray (function template) [edit]
##### Power functions
pow(std::valarray) | applies the function std::pow to two valarrays or a valarray and a value (function template) [edit]
sqrt(std::valarray) | applies the function std::sqrt to each element of valarray (function template) [edit]
##### Trigonometric functions
sin(std::valarray) | applies the function std::sin to each element of valarray (function template) [edit]
cos(std::valarray) | applies the function std::cos to each element of valarray (function template) [edit]
tan(std::valarray) | applies the function std::tan to each element of valarray (function template) [edit]
asin(std::valarray) | applies the function std::asin to each element of valarray (function template) [edit]
acos(std::valarray) | applies the function std::acos to each element of valarray (function template) [edit]
atan(std::valarray) | applies the function std::atan to each element of valarray (function template) [edit]
atan2(std::valarray) | applies the function std::atan2 to a valarray and a value (function template) [edit]
##### Hyperbolic functions
sinh(std::valarray) | applies the function std::sinh to each element of valarray (function template) [edit]
cosh(std::valarray) | applies the function std::cosh to each element of valarray (function template) [edit]
tanh(std::valarray) | applies the function std::tanh to each element of valarray (function template) [edit]

### [edit] Helper classes

slice | BLAS-like slice of a valarray: starting index, length, stride (class) [edit]
slice_array | proxy to a subset of a valarray after applying a slice (class template) [edit]
gslice | generalized slice of a valarray: starting index, set of lengths, set of strides (class) [edit]
gslice_array | proxy to a subset of a valarray after applying a gslice (class template) [edit]
mask_array | proxy to a subset of a valarray after applying a boolean mask `operator[]` (class template) [edit]
indirect_array | proxy to a subset of a valarray after applying indirect `operator[]` (class template) [edit]

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/numeric/valarray&oldid=65352"