|
PositionType | index () const |
|
|
| OrderedSetIterator ()=default |
|
| OrderedSetIterator (PositionType pos, const OrderedSet &oSet) |
|
|
- Note
- We use the enable_if construct to implement both const and non-const iterators in the same implementation.
|
template<bool _Const = Const> |
std::enable_if<!_Const, reference >::type | operator* () |
| Indirection operator for non-const iterator. More...
|
|
template<bool _Const = Const> |
std::enable_if< _Const, reference >::type | operator* () const |
| Indirection operator for const iterator. More...
|
|
template<bool _Const = Const> |
std::enable_if<!_Const, pointer >::type | operator-> () |
| Structure dereference operator for non-const iterator. More...
|
|
template<bool _Const = Const> |
std::enable_if< _Const, pointer >::type | operator-> () const |
| Structure dereference operator for const iterator. More...
|
|
template<bool _Const = Const> |
std::enable_if<!_Const, reference >::type | operator[] (PositionType n) |
| Subscript operator for non-const iterator. More...
|
|
template<bool _Const = Const> |
std::enable_if< _Const, reference >::type | operator[] (PositionType n) const |
| Subscript operator for const iterator. More...
|
|
|
template<typename U > |
| operator OrderedSetIterator< U, true > () const |
| Convert from iterator type to const_iterator type. More...
|
|
|
AXOM_HOST_DEVICE OrderedSetIterator< T, Const > & | operator++ () |
| Pre-increment operator. More...
|
|
OrderedSetIterator< T, Const > | operator++ (int) |
| Post-increment operator. More...
|
|
OrderedSetIterator< T, Const > & | operator-- () |
| Pre-decrement operator. More...
|
|
OrderedSetIterator< T, Const > | operator-- (int) |
| Post-decrement operator. More...
|
|
OrderedSetIterator< T, Const > & | operator+= (PositionType n) |
| Addition-assignment operator. More...
|
|
OrderedSetIterator< T, Const > & | operator-= (PositionType n) |
| Subtraction-assignment operator. More...
|
|
template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType, typename SizePolicy = policies::RuntimeSize<PosType>, typename OffsetPolicy = policies::ZeroOffset<PosType>, typename StridePolicy = policies::StrideOne<PosType>, typename IndirectionPolicy = policies::NoIndirection<PosType, ElemType>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
template<typename T, bool Const>
class axom::slam::OrderedSet< PosType, ElemType, SizePolicy, OffsetPolicy, StridePolicy, IndirectionPolicy, SubsettingPolicy, InterfacePolicy >::OrderedSetIterator< T, Const >
An stl-compliant random iterator type for an ordered set.
Uses the set's policies for efficient iteration
- Template Parameters
-
T | The result type of the iteration |
Const | Boolean to indicate if this is a const iterator |
- Note
- Most operators are implemented via the IteratorBase class
-
The reference type is determined based on the IndirectionPolicy and on the Const template parameter
-
Use of a const template parameter with conditional member and pointer operations based on ideas from https://stackoverflow.com/a/49425072
template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType, typename SizePolicy = policies::RuntimeSize<PosType>, typename OffsetPolicy = policies::ZeroOffset<PosType>, typename StridePolicy = policies::StrideOne<PosType>, typename IndirectionPolicy = policies::NoIndirection<PosType, ElemType>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
template<typename T , bool Const>
template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType, typename SizePolicy = policies::RuntimeSize<PosType>, typename OffsetPolicy = policies::ZeroOffset<PosType>, typename StridePolicy = policies::StrideOne<PosType>, typename IndirectionPolicy = policies::NoIndirection<PosType, ElemType>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
template<typename T , bool Const>
template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType, typename SizePolicy = policies::RuntimeSize<PosType>, typename OffsetPolicy = policies::ZeroOffset<PosType>, typename StridePolicy = policies::StrideOne<PosType>, typename IndirectionPolicy = policies::NoIndirection<PosType, ElemType>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
template<typename T , bool Const>
template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType, typename SizePolicy = policies::RuntimeSize<PosType>, typename OffsetPolicy = policies::ZeroOffset<PosType>, typename StridePolicy = policies::StrideOne<PosType>, typename IndirectionPolicy = policies::NoIndirection<PosType, ElemType>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
template<typename T , bool Const>
using axom::slam::OrderedSet< PosType, ElemType, SizePolicy, OffsetPolicy, StridePolicy, IndirectionPolicy, SubsettingPolicy, InterfacePolicy >::OrderedSetIterator< T, Const >::reference = typename std::conditional< Const, typename OrderedSet::IndirectionPolicyType::ConstIndirectionResult, typename OrderedSet::IndirectionPolicyType::IndirectionResult>::type |
template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType, typename SizePolicy = policies::RuntimeSize<PosType>, typename OffsetPolicy = policies::ZeroOffset<PosType>, typename StridePolicy = policies::StrideOne<PosType>, typename IndirectionPolicy = policies::NoIndirection<PosType, ElemType>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
template<typename T , bool Const>
using axom::slam::OrderedSet< PosType, ElemType, SizePolicy, OffsetPolicy, StridePolicy, IndirectionPolicy, SubsettingPolicy, InterfacePolicy >::OrderedSetIterator< T, Const >::pointer = typename std::conditional<Const, const T*, T*>::type |
template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType, typename SizePolicy = policies::RuntimeSize<PosType>, typename OffsetPolicy = policies::ZeroOffset<PosType>, typename StridePolicy = policies::StrideOne<PosType>, typename IndirectionPolicy = policies::NoIndirection<PosType, ElemType>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
template<typename T , bool Const>
using axom::slam::OrderedSet< PosType, ElemType, SizePolicy, OffsetPolicy, StridePolicy, IndirectionPolicy, SubsettingPolicy, InterfacePolicy >::OrderedSetIterator< T, Const >::IterBase = IteratorBase<OrderedSetIterator<T, Const>, PositionType> |
template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType, typename SizePolicy = policies::RuntimeSize<PosType>, typename OffsetPolicy = policies::ZeroOffset<PosType>, typename StridePolicy = policies::StrideOne<PosType>, typename IndirectionPolicy = policies::NoIndirection<PosType, ElemType>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
template<typename T , bool Const>
template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType, typename SizePolicy = policies::RuntimeSize<PosType>, typename OffsetPolicy = policies::ZeroOffset<PosType>, typename StridePolicy = policies::StrideOne<PosType>, typename IndirectionPolicy = policies::NoIndirection<PosType, ElemType>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
template<typename T , bool Const>
template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType, typename SizePolicy = policies::RuntimeSize<PosType>, typename OffsetPolicy = policies::ZeroOffset<PosType>, typename StridePolicy = policies::StrideOne<PosType>, typename IndirectionPolicy = policies::NoIndirection<PosType, ElemType>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
template<typename T , bool Const>
template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType, typename SizePolicy = policies::RuntimeSize<PosType>, typename OffsetPolicy = policies::ZeroOffset<PosType>, typename StridePolicy = policies::StrideOne<PosType>, typename IndirectionPolicy = policies::NoIndirection<PosType, ElemType>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
template<typename T , bool Const>
template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType, typename SizePolicy = policies::RuntimeSize<PosType>, typename OffsetPolicy = policies::ZeroOffset<PosType>, typename StridePolicy = policies::StrideOne<PosType>, typename IndirectionPolicy = policies::NoIndirection<PosType, ElemType>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
template<typename T , bool Const>
template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType, typename SizePolicy = policies::RuntimeSize<PosType>, typename OffsetPolicy = policies::ZeroOffset<PosType>, typename StridePolicy = policies::StrideOne<PosType>, typename IndirectionPolicy = policies::NoIndirection<PosType, ElemType>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
template<typename T , bool Const>
template<bool _Const = Const>
template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType, typename SizePolicy = policies::RuntimeSize<PosType>, typename OffsetPolicy = policies::ZeroOffset<PosType>, typename StridePolicy = policies::StrideOne<PosType>, typename IndirectionPolicy = policies::NoIndirection<PosType, ElemType>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
template<typename T , bool Const>
template<bool _Const = Const>
template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType, typename SizePolicy = policies::RuntimeSize<PosType>, typename OffsetPolicy = policies::ZeroOffset<PosType>, typename StridePolicy = policies::StrideOne<PosType>, typename IndirectionPolicy = policies::NoIndirection<PosType, ElemType>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
template<typename T , bool Const>
template<bool _Const = Const>
template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType, typename SizePolicy = policies::RuntimeSize<PosType>, typename OffsetPolicy = policies::ZeroOffset<PosType>, typename StridePolicy = policies::StrideOne<PosType>, typename IndirectionPolicy = policies::NoIndirection<PosType, ElemType>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
template<typename T , bool Const>
template<bool _Const = Const>
template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType, typename SizePolicy = policies::RuntimeSize<PosType>, typename OffsetPolicy = policies::ZeroOffset<PosType>, typename StridePolicy = policies::StrideOne<PosType>, typename IndirectionPolicy = policies::NoIndirection<PosType, ElemType>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
template<typename T , bool Const>
template<bool _Const = Const>
Subscript operator for non-const iterator.
template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType, typename SizePolicy = policies::RuntimeSize<PosType>, typename OffsetPolicy = policies::ZeroOffset<PosType>, typename StridePolicy = policies::StrideOne<PosType>, typename IndirectionPolicy = policies::NoIndirection<PosType, ElemType>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
template<typename T , bool Const>
template<bool _Const = Const>
Subscript operator for const iterator.
template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType, typename SizePolicy = policies::RuntimeSize<PosType>, typename OffsetPolicy = policies::ZeroOffset<PosType>, typename StridePolicy = policies::StrideOne<PosType>, typename IndirectionPolicy = policies::NoIndirection<PosType, ElemType>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
template<typename T , bool Const>
template<typename U >
template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType, typename SizePolicy = policies::RuntimeSize<PosType>, typename OffsetPolicy = policies::ZeroOffset<PosType>, typename StridePolicy = policies::StrideOne<PosType>, typename IndirectionPolicy = policies::NoIndirection<PosType, ElemType>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
template<typename T , bool Const>
template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType, typename SizePolicy = policies::RuntimeSize<PosType>, typename OffsetPolicy = policies::ZeroOffset<PosType>, typename StridePolicy = policies::StrideOne<PosType>, typename IndirectionPolicy = policies::NoIndirection<PosType, ElemType>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
template<typename T , bool Const>