42 #ifndef STOKHOS_SPARSEARRAY_HPP 43 #define STOKHOS_SPARSEARRAY_HPP 46 #if defined (__clang__) && !defined (__INTEL_COMPILER) 47 #pragma clang system_header 51 #include "Teuchos_Array.hpp" 55 template <
typename index_iterator,
typename value_iterator>
58 template <
typename index_iterator,
typename value_iterator>
62 template <
typename ordinal_type,
typename val_type>
111 bool found = it !=
end() && *it == i;
130 template <
typename index_iterator_type,
typename value_iterator_type>
131 class SparseArrayIterator :
132 public std::iterator<
133 std::bidirectional_iterator_tag,
134 typename std::iterator_traits<index_iterator_type>::value_type,
135 typename std::iterator_traits<index_iterator_type>::difference_type,
136 typename std::iterator_traits<index_iterator_type>::pointer,
137 typename std::iterator_traits<index_iterator_type>::reference > {
140 typedef std::iterator<
141 std::bidirectional_iterator_tag,
143 typename std::iterator_traits<index_iterator_type>::difference_type,
144 typename std::iterator_traits<index_iterator_type>::pointer,
145 typename std::iterator_traits<index_iterator_type>::reference >
base_type;
151 typedef typename std::iterator_traits<value_iterator_type>::reference
value_reference;
158 value_iterator_type value_it) :
235 template <
typename index_iterator_type,
typename value_iterator_type>
237 public std::reverse_iterator< SparseArrayIterator<index_iterator_type,
238 value_iterator_type> > {
248 typedef typename std::iterator_traits<value_iterator_type>::reference
value_reference;
267 #endif // STOKHOS_SPARSEARRAY_HPP base_type::pointer pointer
SparseArrayIterator operator--(int)
Postfix –.
base_type::difference_type difference_type
value_iterator_type value_iterator
Value iterator.
bool operator!=(const SparseArrayIterator &it) const
!= operator
base_type::pointer pointer
SparseArrayReverseIterator(iterator_type it)
Constructor.
bool operator==(const SparseArrayIterator &it) const
== operator
SparseArrayIterator()
Default constructor.
const_reverse_iterator rend() const
Reverse iterator pointing to begining of array.
bool operator<(const SparseArrayIterator &b) const
Return true of *this < b.
pointer operator->() const
-> operator
base_type::iterator_category iterator_category
base_type::reference reference
Container for a "sparse" array.
const_iterator end() const
Iterator pointing to end of array.
index_iterator_type index_iterator
Index iterator.
std::iterator_traits< value_iterator_type >::reference value_reference
Bi-directional iterator for traversing a sparse array.
Bi-directional reverse iterator for traversing a sparse array.
base_type::value_type value_type
value_reference value() const
Return value associated with iterator.
Teuchos::Array< val_type >::const_iterator value_const_iterator
Top-level namespace for Stokhos classes and functions.
SparseArrayIterator(index_iterator_type index_it, value_iterator_type value_it)
Constructor.
base_type::iterator_category iterator_category
SparseArrayReverseIterator< index_const_iterator, value_const_iterator > const_reverse_iterator
const_iterator begin() const
Iterator pointing to beginning of array.
Teuchos::Array< ordinal_type > indices
Indices of nonzeros.
Teuchos::Array< ordinal_type >::const_iterator index_const_iterator
base_type::value_type value_type
const_iterator find(ordinal_type i) const
Return iterator pointing to given index i.
SparseArrayIterator & operator++()
Prefix ++.
ordinal_type size() const
Return size of array.
Teuchos::Array< val_type > values
Nonzero values.
SparseArrayIterator< index_iterator_type, value_iterator_type > iterator_type
SparseArrayIterator< index_const_iterator, value_const_iterator > const_iterator
std::iterator< std::bidirectional_iterator_tag, typename std::iterator_traits< index_iterator_type >::value_type, typename std::iterator_traits< index_iterator_type >::difference_type, typename std::iterator_traits< index_iterator_type >::pointer, typename std::iterator_traits< index_iterator_type >::reference > base_type
reference operator*() const
base_type::reference reference
value_reference value() const
Return value associated with iterator.
SparseArrayReverseIterator()
Default constructor.
std::iterator_traits< value_iterator_type >::reference value_reference
SparseArrayIterator operator++(int)
Postfix ++.
void resize(ordinal_type sz)
Resize array.
std::reverse_iterator< iterator_type > base_type
const_reverse_iterator rbegin() const
Reverse iterator pointing to end of array.
base_type::difference_type difference_type
SparseArrayIterator & operator--()
Prefix –.