Defined in xtensor/xstrided_view.hpp

template<class CT, class S, layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major>>
class xstrided_view : public xt::xview_semantic<xstrided_view<CT, S, layout_type::dynamic, detail::flat_storage_getter<CT, ::xt::layout_type::row_major>>>, public select_iterable_base_t<layout_type::dynamic, std::decay_t<CT>::static_layout, xstrided_view<CT, S, layout_type::dynamic, detail::flat_storage_getter<CT, ::xt::layout_type::row_major>>>, private xt::xstrided_view_base<xstrided_view<CT, S, layout_type::dynamic, detail::flat_storage_getter<CT, ::xt::layout_type::row_major>>>, public extension::xstrided_view_base_t<CT, S, layout_type::dynamic, detail::flat_storage_getter<CT, ::xt::layout_type::row_major>>

View of an xexpression using strides.

The xstrided_view class implements a view utilizing an initial offset and strides.

Template Parameters:
  • CT – the closure type of the xexpression type underlying this view

  • L – the layout of the strided view

  • S – the strides type of the strided view

  • FST – the flat storage type used for the strided view


template<class CTA, class SA>
inline xstrided_view(CTA &&e, SA &&shape, strides_type &&strides, std::size_t offset, layout_type layout) noexcept

Constructs an xstrided_view.

  • e – the underlying xexpression for this view

  • shape – the shape of the view

  • strides – the strides of the view

  • offset – the offset of the first element in the underlying container

  • layout – the layout of the view


template<class T>
inline void fill(const T &value)

Fills the view with the given value.


value – the value to fill the view with.

Extended copy semantic

template<class E>
inline auto operator=(const xexpression<E> &e) -> self_type&

The extended assignment operator.

Public Functions

inline size_type dimension() const noexcept

Returns the number of dimensions of the expression.

inline size_type shape(size_type index) const

Returns the i-th dimension of the expression.

inline size_type size() const noexcept

Returns the size of the expression.

template<class ...Args>
inline auto at(Args... args) const -> const_reference

Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.


args – a list of indices specifying the position in the expression. Indices must be unsigned integers, the number of indices should be equal to the number of dimensions of the expression.


std::out_of_range – if the number of argument is greater than the number of dimensions or if indices are out of bounds.

typedef std::vector<xstrided_slice<std::ptrdiff_t>> xt::xstrided_slice_vector

vector of slices used to build a xstrided_view

template<layout_type L = layout_type::dynamic, class E, class S, class X>
inline auto xt::strided_view(E &&e, S &&shape, X &&strides, std::size_t offset, layout_type layout) noexcept

Construct a strided view from an xexpression, shape, strides and offset.

  • e – xexpression

  • shape – the shape of the view

  • strides – the new strides of the view

  • offset – the offset of the first element in the underlying container

  • layout – the new layout of the expression

Template Parameters:
  • L – the static layout type of the view (default: dynamic)

  • E – type of xexpression

  • S – strides type

  • X – strides type


the view

template<class E>
inline auto xt::strided_view(E &&e, const xstrided_slice_vector &slices)

Function to create a dynamic view from an xexpression and an xstrided_slice_vector.

xt::xarray<double> a = {{1, 2, 3}, {4, 5, 6}};
xt::xstrided_slice_vector sv({xt::range(0, 1)});
sv.push_back(xt::range(0, 3, 2));
auto v = xt::strided_view(a, sv);
// ==> {{1, 3}}

You can also achieve the same with the following short-hand syntax:

xt::xarray<double> a = {{1, 2, 3}, {4, 5, 6}};
auto v = xt::strided_view(a, {xt::range(0, 1), xt::range(0, 3, 2)});
// ==> {{1, 3}}
  • e – xexpression

  • slices – the slice vector


initialized strided_view according to slices

template<layout_type L = ::xt::layout_type::row_major, class E, class S>
inline auto xt::reshape_view(E &&e, S &&shape, layout_type)

Return a view on a container with a new shape.


Note: if you resize the underlying container, this view becomes invalidated.

  • e – xexpression to reshape

  • shape – new shape

  • order – traversal order (optional)


view on xexpression with new shape