20#ifndef LIBMESH_INT_RANGE_H
21#define LIBMESH_INT_RANGE_H
23#include "libmesh/libmesh_common.h"
32template <
typename T>
class DenseSubVector;
33template <
typename T>
class DenseVector;
34template <
typename T>
class NumericVector;
81 template <
typename T2>
87 template <
typename T2>
97 return (
_i == j.
_i );
102 return !(*
this == j);
111 template <
typename U,
typename V>
140template <
typename T,
typename T2>
155 return IntRange<
decltype(sizable.size())>(0, sizable.size());
bool operator!=(const iterator &j) const
bool operator==(const iterator &j) const
const iterator & operator++()
std::input_iterator_tag iterator_category
iterator operator+(T2 n) const
The IntRange templated class is intended to make it easy to loop over integers which are indices of a...
IntRange(const IntRange &, const const_iterator &begin, const const_iterator &end)
IntRange< T >::iterator const_iterator
std::size_t grainsize() const
Provides a uniform interface to vector storage schemes for different linear algebra libraries.
virtual numeric_index_type last_local_index() const =0
virtual numeric_index_type first_local_index() const =0
The libMesh namespace provides an interface to certain functionality in the library.
unsigned int default_grainsize()
auto index_range(const T &sizable)
Helper function that returns an IntRange<std::size_t> representing all the indices of the passed-in v...
Order operator+(Order o, T p)
IntRange< T > make_range(T beg, T end)
The 2-parameter make_range() helper function returns an IntRange<T> when both input parameters are of...