std::slice

From cppreference.com
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[].

[edit] Member functions

constructs a slice
(public member function)
accesses the start of the slice
(public member function)
accesses the size of the slice
(public member function)
accesses the stride of the slice
(public member function)

[edit] 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

[edit] 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)