< cpp‎ | numeric
Revision as of 00:51, 31 March 2013 by Marktsuchida (Talk | contribs)

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.



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.

Member types

Member type Definition
value_type T

Member functions

Template:cpp/numeric/valarray/dcl list valarrayTemplate:cpp/numeric/valarray/dcl list ~valarrayTemplate:cpp/numeric/valarray/dcl list operator=Template:cpp/numeric/valarray/dcl list operator atTemplate:cpp/numeric/valarray/dcl list operator arithTemplate:cpp/numeric/valarray/dcl list operator arith2Template:cpp/numeric/valarray/dcl list swapTemplate:cpp/numeric/valarray/dcl list sizeTemplate:cpp/numeric/valarray/dcl list resizeTemplate:cpp/numeric/valarray/dcl list sumTemplate:cpp/numeric/valarray/dcl list minTemplate:cpp/numeric/valarray/dcl list maxTemplate:cpp/numeric/valarray/dcl list shiftTemplate:cpp/numeric/valarray/dcl list cshiftTemplate:cpp/numeric/valarray/dcl list apply

Non-member functions

Template:cpp/numeric/valarray/dcl list swap2Template:cpp/numeric/valarray/dcl list begin2Template:cpp/numeric/valarray/dcl list end2Template:cpp/numeric/valarray/dcl list operator arith3Template:cpp/numeric/valarray/dcl list operator cmpTemplate:cpp/numeric/valarray/dcl list absTemplate:cpp/numeric/valarray/dcl list expTemplate:cpp/numeric/valarray/dcl list logTemplate:cpp/numeric/valarray/dcl list log10Template:cpp/numeric/valarray/dcl list powTemplate:cpp/numeric/valarray/dcl list sqrtTemplate:cpp/numeric/valarray/dcl list sinTemplate:cpp/numeric/valarray/dcl list cosTemplate:cpp/numeric/valarray/dcl list tanTemplate:cpp/numeric/valarray/dcl list asinTemplate:cpp/numeric/valarray/dcl list acosTemplate:cpp/numeric/valarray/dcl list atanTemplate:cpp/numeric/valarray/dcl list atan2Template:cpp/numeric/valarray/dcl list sinhTemplate:cpp/numeric/valarray/dcl list coshTemplate:cpp/numeric/valarray/dcl list tanh
Exponential functions
Power functions
Trigonometric functions
Hyperbolic functions

Helper classes

Template:cpp/numeric/valarray/dcl list sliceTemplate:cpp/numeric/valarray/dcl list slice arrayTemplate:cpp/numeric/valarray/dcl list gsliceTemplate:cpp/numeric/valarray/dcl list gslice arrayTemplate:cpp/numeric/valarray/dcl list mask arrayTemplate:cpp/numeric/valarray/dcl list indirect array