std::slice
Defined in header <valarray> | ||
|---|---|---|
class slice; |
std::slice is the selector class that identifies a subset of std::valarray similar to BLAS slice. An object of type std::slice holds three values: the starting index, the stride, and the total number of values in the subset. Objects of type std::slice can be used as indexes with valarray's operator[].
Member functions
| (constructor) | constructs a slice (public member function) |
| startsizestride | returns the parameters of the slice (public member function) |
std::slice::slice
slice() | ||
slice( std::size_t start, std::size_t size, std::size_t stride ); | ||
slice( const slice& other ); |
Constructs a new slice.
slice(0, 0, 0). This constructor exists only to allow construction of arrays of slices.start, size, stride. This slice will refer to size number of elements, each with the position:other.Parameters
| start | - | the position of the first element |
| size | - | the number of elements in the slice |
| stride | - | the number of positions between successive elements in the slice |
| other | - | another slice to copy |
std::slice::start, size, stride
std::size_t start() const; | (1) | |
std::size_t size() const; | (2) | |
std::size_t stride() const; | (3) |
Returns the parameters passed to the slice on construction - start, size and stride respectively.
Parameters
(none).
Return value
The parameters of the slice -- start, size and stride respectively.
Complexity
Constant.
Example
Barebones valarray-backed Matrix class with a trace calculating function.
#include <iostream>
#include <valarray>
class Matrix {
std::valarray<int> data;
int dim;
public:
Matrix(int r, int c) : data(r*c), dim(c) {}
int& operator()(int r, int c) {return data[r*dim + c];}
int trace() const {
return data[std::slice(0, dim, dim+1)].sum();
}
};
int main()
{
Matrix m(3,3);
int n = 0;
for(int r=0; r<3; ++r)
for(int c=0; c<3; ++c)
m(r, c) = ++n;
std::cout << "Trace of the matrix (1,2,3) (4,5,6) (7,8,9) is " << m.trace() << '\n';
}Output:
Trace of the matrix (1,2,3) (4,5,6) (7,8,9) is 15
See also
| get/set valarray element, slice, or mask (public member function) |
|
| generalized slice of a valarray: starting index, set of lengths, set of strides (class) |
|
| proxy to a subset of a valarray after applying a slice (class template) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/numeric/valarray/slice