Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for a snapshot of the develop branch, built from commit 26d7d9b59f.

Strides

basic_strides<size_type, format_type>

Description

The template class basic_strides contains weights for a given storage format in order to map multi-indices to scalar memory indices for tensor instances.

Example

#include <boost/numeric/ublas/tensor/strides.hpp>

int main () {
    using namespace boost::numeric::ublas;
    auto wf = strides<first_order>(shape{4,3,2});
    for (auto i = 0u; i < wf.size(); ++i)
        std::cout << wf.at(i) << std::endl;    
        // 1,4,12
        
    auto wl = strides<first_order>(shape{4,3,2});
    for (auto i = 0u; i < wl.size(); ++i)
        std::cout << wl.at(i) << std::endl;    
        // 6,2,1        
}

Definition

Defined in the header tensor/strides.hpp.

Public base classes

None.

Specialization

template<class format_t>
using strides = basic_strides<std::size_t,format_t>

Template parameters

Parameter Description
size_type Unsigned integer type.

Member types

Member type Description
value_type Type size_type of the strides.
size_type Unsigned integer such as std::size_t.
reference Reference type which is value_type&.
const_reference Constant reference type which is const value_type&.
pointer Pointer type which is value_type*.
const_pointer Constant pointer type which is const value_type*.
layout_type Layout type which can be either boost::numeric::ublas::first_order or boost::numeric::ublas::last_order.

Member Functions

Member Function Description
basic_strides () Constructs an empty instance of basic_strides.
basic_strides (basic_extents<value_type> const& be) Constructs an instance based on the tensor extents specified by be.
basic_strides (std::vector<value_type> const& v) Constructs an instance copying the content of v.
basic_strides (std::vector<value_type> && v) Constructs an instance moving the content of v.
basic_strides (basic_strides const& other) Constructs an instance from other copying its elements.
basic_strides (basic_strides && other) Constructs an instance from other by moving its elements.
basic_strides& operator= (basic_strides other) Assigns the elements of other to this instance.
const_pointer data() const Returns a const_pointer to the first element.
const_reference operator[](size_type i) const Returns a const_reference to the i-th element.
const_reference at(size_type i) const Returns a const_reference to the i-th element.
bool empty() Returns true if the container has no elements.
size_type size() const Returns the number of elements.
void clear() Erases all elements.
bool operator==(basic_strides const& b) const Returns true if all elements are equal.
bool operator!=(basic_strides const& b) const Returns true if some elements are not equal.
const_iterator begin() const Returns an const_iterator pointing to the first element.
const_iterator end() const Returns a const_iterator pointing to an element passed the last element.
std::vector<size_type> base() const Returns the private member sequence container holding all elements.

Non-Member Functions

Function Description
access(std::vector<size_type> const& i, strides<layout_type> w) Returns relative memory location depending on the multi-index vector i and strides w.
access(size_type sum, strides<layout_type> w, size_type i, size_types ... is) Returns relative memory location depending on the indices i, is ... and stride vector w (recursive function).

Copyright (©) 2018 Cem Bassoy
Use, modification and distribution are subject to the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt ).