Namespaces
Variants
Views
Actions

std::valarray

From cppreference.com
< cpp‎ | numeric
Revision as of 12:45, 9 September 2013 by Cubbi (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.

Contents

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.

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

Member functions

constructs new numeric array
(public member function) [edit]
destructs the numeric array
(public member function) [edit]
assigns the contents
(public member function) [edit]
get/set valarray element, slice, or mask
(public member function) [edit]
applies a unary arithmetic operator to each element of the valarray
(public member function) [edit]
applies compound assignment operator to each element of the valarray
(public member function) [edit]
swaps with another valarray
(public member function) [edit]
returns the size of valarray
(public member function) [edit]
changes the size of valarray
(public member function) [edit]
calculates the sum of all elements
(public member function) [edit]
returns the smallest element
(public member function) [edit]
returns the largest element
(public member function) [edit]
zero-filling shift the elements of the valarray
(public member function) [edit]
circular shift of the elements of the valarray
(public member function) [edit]
applies a function to every element of a valarray
(public member function) [edit]

Non-member functions

specializes the std::swap() algorithm
(function template) [edit]
specializes std::begin
(function template) [edit]
specializes std::end
(function template) [edit]
applies binary operators to each element of two valarrays, or a valarray and a value
(function template) [edit]
compares two valarrays or a valarray with a value
(function template) [edit]
applies the function std::abs to each element of valarray
(function template) [edit]
Exponential functions
applies the function std::exp to each element of valarray
(function template) [edit]
applies the function std::log to each element of valarray
(function template) [edit]
applies the function std::log10 to each element of valarray
(function template) [edit]
Power functions
applies the function std::pow to two valarrays or a valarray and a value
(function template) [edit]
applies the function std::sqrt to each element of valarray
(function template) [edit]
Trigonometric functions
applies the function std::sin to each element of valarray
(function template) [edit]
applies the function std::cos to each element of valarray
(function template) [edit]
applies the function std::tan to each element of valarray
(function template) [edit]
applies the function std::asin to each element of valarray
(function template) [edit]
applies the function std::acos to each element of valarray
(function template) [edit]
applies the function std::atan to each element of valarray
(function template) [edit]
applies the function std::atan2 to a valarray and a value
(function template) [edit]
Hyperbolic functions
applies the function std::sinh to each element of valarray
(function template) [edit]
applies the function std::cosh to each element of valarray
(function template) [edit]
applies the function std::tanh to each element of valarray
(function template) [edit]

Helper classes

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