<valarray>
The <valarray>
header declares types and functions for operating on
arrays of numerical values. The intention is to provide types that could
be optimized on certain hardware platforms for computationally-intensive
programs. The consensus in the C++ user community seems to be that the
standard failed to live up to the intentions. Several other numerical
libraries, such as Blitz++ and MTL, provide high-performance matrix
solutions. (See Appendix B for more
information about Blitz++.) Most programs do not need <valarray>
.
A valarray
is a class template
that represents a one-dimensional array of numerical values. The array
can grow at runtime. All the arithmetic operators and mathematical
functions are overloaded to work with two valarray
arguments or with a valarray
and a scalar. You can also work with
parts of an array: slices, generalized slices, masks, and indirect
arrays.
A slice is a set of elements of a valarray
, with a starting index, a count, and
a stride (an index interval). A generalized
slice (gslice
)
lets the stride count and length vary, which can be used to implement
multidimensional arrays. A mask is a valarray
of flags, in which the flags indicate
whether the corresponding item is part of the masked array. An
indirect array is an array of
indices. Each of these concepts is explained in this section.
The most important distinguishing feature of valarray
s is that they do not allow aliasing,
that is, an object cannot be an element of more than one valarray
. This ...
Get C++ In a Nutshell now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.