Standard C++ Library
Copyright 1998, Rogue Wave Software, Inc.
NAME
slice
- A numeric array class for representing a BLAS-like slice
from an array.
SYNOPSIS
#include <valarray>
class slice ;
DESCRIPTION
slice allows you to represent a BLAS-like slice from an
array. A BLAS slice contains a starting index, a length, and
a stride. The index indicates the first element in the
slice, the length determines the number of elements, and the
stride indicates the interval between elements in the origi-
nal array. For instance, the slice (1,3,2) applied to the
array (1,2,3,4,5,6,7) produces the array (2,4,6).
When applied to a valarray using the slice subscript opera-
tor (see valarray) a slice produces a slice_array. The
slice_array gives a view into the original valarray that is
tailored to match parameters of the slice. The elements in a
slice_array are references to the elements in the original
array. This means you need to explicitly copy the
slice_array into another valarray in order to have a dis-
tinct array.
INTERFACE
class slice {
public:
// constructors
slice();
slice(size_t, size_t, size_t);
// Accessors
size_t start() const;
size_t size() const;
size_t stride() const;
};
CONSTRUCTORS
slice();
Creates a slice specifying no elements. This constructor
is only intended to allow the creation of arrays of
slices.
slice(size_t start, size_t length, size_t stride);
Creates a slice with starting index, length, and stride
as indicated by the arguments.
slice(const slice&)
Creates a slice with starting index, length, and stride
as indicated by the slice argument.
ACCESSORS
size_t start();
Returns the starting index of the slice.
size_t size();
Returns the length of the slice.
size_t stride();
Returns the stride of the slice.
EXAMPLE
//
// slice.cpp
//
#include "valarray.h" // Contains a valarray stream inserter
using namespace std;
int main(void)
{
int ibuf[10] = {0,1,2,3,4,5,6,7,8,9};
// create a valarray of ints
valarray<int> vi(ibuf,10);
// print it out
cout << vi << endl;
// print out a slice
cout << valarray<int>(vi[slice(1,3,2)]) << endl;
return 0;
}
Program Output
[0,1,2,3,4,5,6,7,8,9]
[1,3,5]
WARNINGS
If your compiler does not support namespaces, then you do
not need the using declaration for std.
SEE ALSO
valarray, slice_array, gslice, gslice_array, mask_array,
indirect_array