Rogue Wave banner
Previous fileTop of documentContentsIndexNext file

valarray


Container

Summary

An optimized array class for numeric operations.

Data Type and Member Function Indexes
(exclusive of constructors and destructors)

Synopsis

#include <valarray>
template <class T >
class valarray ;

Description

valarray<T> and associated classes (slice_array, gslice_array, mask_array, and indirect_array) represent and manipulate one dimensional arrays of values. Elements in a valarray are indexed sequentially beginning with zero.

Unlike other classes in the Standard Library, valarray<T> can only be used with a fairly narrow range of types. This restriction ensures that numeric operations on a valarray can be as efficient as possible by avoiding aliasing ambiguities and excess temporaries.

Interface

template <class T> class valarray {
public:

// types
typedef T value_type;

// constructors
valarray( );
explicit valarray(size_t);
valarray(const T&, size_t);
valarray(const T* , size_t);
valarray(const valarray<T>&);
valarray(const slice_array<T>&);
valarray(const gslice_array<T>&);
valarray(const mask_array<T>&);
valarray(const indirect_array<T>&);

// destructor
~valarray();

// operator =
valarray<T>& operator= (const valarray<T>&);
valarray<T>& operator= (const slice_array<T>&);
valarray<T>& operator= (const gslice_array<T>&);
valarray<T>& operator= (const mask_array<T>&);
valarray<T>& operator= (const indirect_array<T>&);
valarray<T>& operator= (const T&);
// operator[]
T operator[] (size_t) const;
T& operator[] (size_t);
valarray<T> operator[](slice) const;
inline slice_array<T> operator[](slice);
valarray<T> operator[](const gslice&) const;
inline gslice_array<T> operator[](const gslice&);
valarray<T> operator[](const valarray<bool>&) const;
inline mask_array<T> operator[](const valarray<bool>&);
valarray<T> operator[](const valarray<size_t>&) const;
inline indirect_array<T> operator[](const valarray<size_t>&);

// unary operators
valarray<T> operator+() const;
valarray<T> operator-() const;
valarray<T> operator~() const;
valarray<bool> operator!() const;

// computed assignment
valarray<T>& operator*= (const valarray<T>&);
valarray<T>& operator/= (const valarray<T>&);
valarray<T>& operator+= (const valarray<T>&);
valarray<T>& operator-= (const valarray<T>&);
valarray<T>& operator%= (const valarray<T>&);
valarray<T>& operator^= (const valarray<T>&);
valarray<T>& operator&= (const valarray<T>&);
valarray<T>& operator|= (const valarray<T>&);
valarray<T>& operator<<= (const valarray<T>&);
valarray<T>& operator>>= (const valarray<T>&);
valarray<T>& operator*= (const T&);
valarray<T>& operator/= (const T&);
valarray<T>& operator%= (const T&);
valarray<T>& operator+= (const T&);
valarray<T>& operator-= (const T&);
valarray<T>& operator^= (const T&);
valarray<T>& operator&= (const T&);
valarray<T>& operator|= (const T&);
valarray<T>& operator<<= (const T&);
valarray<T>& operator>>= (const T&);


// others
size_t size() const;
T sum() const;
T min() const;
T max() const;

valarray<T> shift(int) const;
valarray<T> cshift(int) const;

valarray<T> apply(T func(T)) const;
valarray<T> apply(T func(const T&)) const;
void free();
void resize(size_t, const T& = T() );
};

// Non-member binary operators
template<class T> valarray<T> 
operator* (const valarray<T>& , const valarray<T>&  );
template<class T> valarray<T> 
operator/ (const valarray<T>& , const valarray<T>& );
template<class T> valarray<T> 
operator% (const valarray<T>&, const valarray<T>&);
template<class T> valarray<T> 
operator+ (const valarray<T>& , const valarray<T>& );
template<class T> valarray<T> 
operator- (const valarray<T>& , const valarray<T>& );
template<class T> valarray<T> 
operator^ (const valarray<T>&, const valarray<T>&);
template<class T> valarray<T> 
operator& (const valarray<T>&, const valarray<T>&);
template<class T> valarray<T> 
operator| (const valarray<T>&, const valarray<T>&);
template<class T> valarray<T> 
operator<< (const valarray<T>&, const valarray<T>&);
template<class T> valarray<T> 
operator>> (const valarray<T>&, const valarray<T>&);

template<class T> valarray<T> 
operator* (const valarray<T>& , const T& );
template<class T> valarray<T> 
operator/ (const valarray<T>& , const T& );
template<class T> valarray<T> 
operator% (const valarray<T>&, const T&);
template<class T> valarray<T> 
operator+ (const valarray<T>& , const T& );
template<class T> valarray<T> 
operator- (const valarray<T>& , const T& );
template<class T> valarray<T> 
operator^ (const valarray<T>&, const T&);
template<class T> valarray<T> 
operator& (const valarray<T>&, const T&);
template<class T> valarray<T> 
operator| (const valarray<T>&, const T&);
template<class T> valarray<T> 
operator<< (const valarray<T>&, const T&);
template<class T> valarray<T> 
operator>> (const valarray<T>&, const T&);

template<class T> valarray<T> 
operator* (const T& , const valarray<T>& ); 
template<class T> valarray<T> 
operator/ (const T& , const valarray<T>& );
template<class T> valarray<T> 
operator% (const T&, const valarray<T>&);
template<class T> valarray<T> 
operator+ (const T& , const valarray<T>& );
template<class T> valarray<T> 
operator- (const T& , const valarray<T>& );
template<class T> valarray<T> 
operator^ (const T&, const valarray<T>&);
template<class T> valarray<T> 
operator& (const T&, const valarray<T>&);
template<class T> valarray<T> 
operator| (const T&, const valarray<T>&);
template<class T> valarray<T> 
operator<< (const T&, const valarray<T>&);
template<class T> valarray<T> 
operator>> (const T&, const valarray<T>&);

// Non-member logical operators

template<class T> valarray<bool> 
operator== (const valarray<T>& , const valarray<T>& );
template<class T> valarray<bool> 
operator!= (const valarray<T>& , const valarray<T>& );
template<class T> valarray<bool> 
operator< (const valarray<T>& , const valarray<T>& );
template<class T> valarray<bool> 
operator> (const valarray<T>& , const valarray<T>& );
template<class T> valarray<bool> 
operator<= (const valarray<T>& , const valarray<T>& ); 
template<class T> valarray<bool> 
operator>= (const valarray<T>& , const valarray<T>& );
template<class T> valarray<bool> 
operator|| (const valarray<T>& , const valarray<T>&);
template<class T> valarray<bool> 
operator&& (const valarray<T>&, const valarray<T>&);

template<class T> valarray<bool> 
operator== (const valarray<T>& , const T& );
template<class T> valarray<bool> 
operator!= (const valarray<T>& , const T& );
template<class T> valarray<bool> 
operator< (const valarray<T>& , const T& );
template<class T> valarray<bool> 
operator> (const valarray<T>& , const T& );
template<class T> valarray<bool> 
operator<= (const valarray<T>& , const T& );
template<class T> valarray<bool> 
operator>= (const valarray<T>& , const T& );
template<class T> valarray<bool> 
operator|| (const valarray<T>& , const T& );
template<class T> valarray<bool> 
operator&& (const valarray<T>&, const T&);

template<class T> valarray<bool> 
operator== (const T& , const valarray<T>& );
template<class T> valarray<bool> 
operator!= (const T& , const valarray<T>& );
template<class T> valarray<bool> 
operator< (const T& , const valarray<T>& );
template<class T> valarray<bool> 
operator> (const T& , const valarray<T>& );
template<class T> valarray<bool> 
operator<= (const T& , const valarray<T>& ); 
template<class T> valarray<bool> 
operator>= (const T& , const valarray<T>& );
template<class T> valarray<bool> 
operator|| (const T& , const valarray<T>& );
template<class T> valarray<bool> 
operator&& (const T&, const valarray<T>&);

// non-member transcendental functions

template<class T> valarray<T> abs(const valarray<T>& );
template<class T> valarray<T> acos(const valarray<T>& );
template<class T> valarray<T> asin(const valarray<T>& );
template<class T> valarray<T> atan(const valarray<T>& );
template<class T> valarray<T> cos(const valarray<T>& );
template<class T> valarray<T> cosh(const valarray<T>& );
template<class T> valarray<T> exp(const valarray<T>& );
template<class T> valarray<T> log(const valarray<T>& );
template<class T> valarray<T> log10(const valarray<T>& );
template<class T> valarray<T> sinh(const valarray<T>& );
template<class T> valarray<T> sin(const valarray<T>& );
template<class T> valarray<T> sqrt(const valarray<T>& );
template<class T> valarray<T> tan(const valarray<T>& );
template<class T> valarray<T> tanh(const valarray<T>& );

template<class T> valarray<T> 
atan2(const valarray<T>& , const valarray<T>& );
template<class T> valarray<T> 
atan2(const valarray<T>& , const T& );
template<class T> valarray<T> 
atan2(const T& , const valarray<T>& );
template<class T> valarray<T> 
pow(const valarray<T>& , const valarray<T>& );
template<class T> valarray<T> 
pow(const valarray<T>& , const T& );
template<class T> valarray<T> 
pow(const T& , const valarray<T>& );

Constructors

valarray();
explicit valarray(size_t n);
explicit valarray(const T& value, size_t n);
explicit valarray(const T* value, size_t n);
valarray(const valarray<T>& x);
valarray(const slice_array<T>& x);
valarray(const gslice_array<T>& x);
valarray(const mask_array<T>& x);
valarray(const indirect_array<T>& x);

Destructors

~valarray();

Assignment Operators

valarray<T>& 
operator=(const valarray<T>& x);
valarray<T>& 
operator=(const T& x);
valarray<T>& 
operator=(const slice_array<T>& x);
valarray<T>& 
operator=(const gslice_array<T>& x);
valarray<T>& 
operator=(const mask<T>& x);
valarray<T>& 
operator=(const indirect_array<T>& x);

Reference Operators

T& operator[](size_type n);
T operator[](size_type n) const;

Subset Operators

valarray<T> operator[](slice s) const;
slice_array<T> operator[](slice s); 
valarray<T> operator[](const gslice& s) const;
gslice_array<T> operator[](const gslice& s); 
valarray<T> operator[](const valarray<bool>& v) const;
mask_array<T> operator[](const valarray<bool>& v);  
valarray<T> operator[](const valarray<size_t>& v) const;
Indirect_array<T> operator[](const valarray<size_t>& v); 

Unary Operators

valarray<T> operator+() const;
valarray<T> operator-() const;
valarray<T> operator~() const;
valarray<bool> operator!() const;

Computed Assignment Operators

valarray<T>& operator*=(const valarray<T>& val);
valarray<T>& operator/=(const valarray<T>& val);
valarray<T>& operator%=(const valarray<T>& val);
valarray<T>& operator+=(const valarray<T>& val);
valarray<T>& operator-=(const valarray<T>& val);
valarray<T>& operator^=(const valarray<T>& val);
valarray<T>& operator&=(const valarray<T>& val);
valarray<T>& operator|=(const valarray<T>& val);
valarray<T>& operator<<=(const valarray<T>& val);
valarray<T>& operator>>=(const valarray<T>& val);
valarray<T>& operator*=(const T& val);
valarray<T>& operator/=(const T& val);
valarray<T>& operator%=(const T& val);
valarray<T>& operator+=(const T& val);
valarray<T>& operator-=(const T& val);
valarray<T>& operator^=(const T& val);
valarray<T>& operator&=(const T& val);
valarray<T>& operator|=(const T& val);
valarray<T>& operator<<=(const T& val);
valarray<T>& operator>>=(const T& val);

Member Functions

size_t size() const;
T sum() const;
T min() const;
T max() const;
valarray<T> shift(int n) const;
valarray<T> cshift(int n) const;
valarray<T> apply(T func(T)) const;
valarray<T> apply(T func(const T&)) const;
void 
resize(size_type sz, T c = T());

Non-member Binary Operators

template <class T> valarray<T> 
operator*(const valarray<T>& lhs, const valarray<T>& rhs);
template <class T> valarray<T> 
operator/(const valarray<T>& lhs, const valarray<T>& rhs);
template <class T> valarray<T> 
operator%(const valarray<T>& lhs, const valarray<T>& rhs);
template <class T> valarray<T> 
operator+(const valarray<T>& lhs, const valarray<T>& rhs);
template <class T> valarray<T> 
operator-(const valarray<T>& lhs, const valarray<T>& rhs);
template <class T> valarray<T> 
operator^(const valarray<T>& lhs, const valarray<T>& rhs);
template <class T> valarray<T> 
operator&(const valarray<T>& lhs, const valarray<T>& rhs);
template <class T> valarray<T> 
operator|(const valarray<T>& lhs, const valarray<T>& rhs);
template <class T> valarray<T> 
operator<<(const valarray<T>& lhs, const valarray<T>& rhs);
template <class T> valarray<T> 
operator>>(const valarray<T>& lhs, const valarray<T>& rhs);
template <class T> valarray<T> 
operator*(const valarray<T>& lhs, T& rhs);
template <class T> valarray<T> 
operator/(const valarray<T>& lhs, const T& rhs);
template <class T> valarray<T> 
operator%(const valarray<T>& lhs, const T& rhs);
template <class T> valarray<T> 
operator+(const valarray<T>& lhs, const T& rhs);
template <class T> valarray<T> 
operator-(const valarray<T>& lhs, const T& rhs);
template <class T> valarray<T> 
operator^(const valarray<T>& lhs, const T& rhs);
template <class T> valarray<T> 
operator&(const valarray<T>& lhs, const T& rhs);
template <class T> valarray<T> 
operator|(const valarray<T>& lhs, const T& rhs);
template <class T> valarray<T> 
operator<<(const valarray<T>& lhs, const T& rhs);
template <class T> valarray<T> 
operator>>(const valarray<T>& lhs, const T& rhs);
template <class T> valarray<T> 
operator*(const T& rhs, valarray<T>& rhs);
template <class T> valarray<T> 
operator/(const T& lhs, const valarray<T>& rhs);
template <class T> valarray<T> 
operator%(const T& lhs, const valarray<T>& rhs);
template <class T> valarray<T> 
operator+(const T& lhs, const valarray<T>& rhs);
template <class T> valarray<T> 
operator-(const T& lhs, const valarray<T>& rhs);
template <class T> valarray<T> 
operator^(const T& lhs, const valarray<T>& rhs);
template <class T> valarray<T> 
operator&(const T& lhs, const valarray<T>& rhs);
template <class T> valarray<T> 
operator|(const T& lhs, const valarray<T>& rhs);
template <class T> valarray<T> 
operator<<(const T& lhs, const valarray<T>& rhs);
template <class T> valarray<T> 
operator>>(const T& lhs, const valarray<T>& rhs);

Non-member Logical Operators

template <class T> valarray<bool> 
operator==(const valarray<T>& lhs, const valarray<T>& rhs);
template <class T> valarray<bool> 
operator!=(const valarray<T>& lhs, const valarray<T>& rhs);
template <class T> valarray<bool> 
operator<(const valarray<T>& lhs, const valarray<T>& rhs);
template <class T> valarray<bool> 
operator>(const valarray<T>& lhs, const valarray<T>& rhs);
template <class T> valarray<bool> 
operator<=(const valarray<T>& lhs, const valarray<T>& rhs);
template <class T> valarray<bool> 
operator>=(const valarray<T>& lhs, const valarray<T>& rhs);
template <class T> valarray<bool> 
operator&&(const valarray<T>& lhs, const valarray<T>& rhs);
template <class T> valarray<bool> 
operator||(const valarray<T>& lhs, const valarray<T>& rhs);
template <class T> valarray<bool> 
operator==(const valarray<T>& lhs, T& rhs);
template <class T> valarray<bool> 
operator!=(const valarray<T>& lhs, const T& rhs);
template <class T> valarray<bool> 
operator<(const valarray<T>& lhs, const T& rhs);
template <class T> valarray<bool> 
operator>(const valarray<T>& lhs, const T& rhs);
template <class T> valarray<bool> 
operator<=(const valarray<T>& lhs, const T& rhs);
template <class T> valarray<bool> 
operator>=(const valarray<T>& lhs, const T& rhs);
template <class T> valarray<bool> 
operator&&(const valarray<T>& lhs, const T& rhs);
template <class T> valarray<bool> 
operator||(const valarray<T>& lhs, const T& rhs);
template <class T> valarray<bool> 
operator==(const T& rhs, valarray<T>& rhs);
template <class T> valarray<bool> 
operator!=(const T& lhs, const valarray<T>& rhs);
template <class T> valarray<bool> 
operator<(const T& lhs, const valarray<T>& rhs);
template <class T> valarray<bool> 
operator>(const T& lhs, const valarray<T>& rhs);
template <class T> valarray<bool> 
operator<=(const T& lhs, const valarray<T>& rhs);
template <class T> valarray<bool> 
operator>=(const T& lhs, const valarray<T>& rhs);
template <class T> valarray<bool> 
operator&&(const T& lhs, const valarray<T>& rhs);
template <class T> valarray<bool> 
operator||(const T& lhs, const valarray<T>& rhs);

Non-member Transcendental Functions

template <class T> valarray<T> abs(const valarray<T>& v);
template <class T> valarray<T> acos(const valarray<T>& v);
template <class T> valarray<T> asin(const valarray<T>& v);
template <class T> valarray<T> atan(const valarray<T>& v);
template <class T> valarray<T> cos(const valarray<T>& v);
template <class T> valarray<T> cosh(const valarray<T>& v);
template <class T> valarray<T> exp(const valarray<T>& v);
template <class T> valarray<T> log(const valarray<T>& v);
template <class T> valarray<T> log10(const valarray<T>& v);
template <class T> valarray<T> sin(const valarray<T>& v);
template <class T> valarray<T> sinh(const valarray<T>& v);
template <class T> valarray<T> sqrt(const valarray<T>& v);
template <class T> valarray<T> tan(const valarray<T>& v);
template <class T> valarray<T> tanh(const valarray<T>& v);
template <class T> valarray<T> 
atan2(const valarray<T>& v, const valarray<T>& v2);
template <class T> valarray<T> 
pow(const valarray<T>& v, const valarray<T>& v2);
template <class T> valarray<T> 
atan2(const valarray<T>& v, const T& v2);
template <class T> valarray<T> 
pow(const valarray<T>& v, const T& v2);
template <class T> valarray<T> 
atan2(const T& v, const valarray<T> v2);
template <class T> valarray<T> 
pow(const T& v, const valarray<T> v2);

Example



Previous fileTop of documentContentsIndexNext file
©Copyright 1998, Rogue Wave Software, Inc.
Send mail to report errors or comment on the documentation.
OEM Release, June 1998