AutoIterator< C > Class Template Reference Data Structures

#include <foreach.h>

Inheritance diagram for AutoIterator< C >:

详细描述

template<typename C>
class maxon::AutoIterator< C >

AutoIterator implements a foreach iterator based on two normal iterators. one for the current position and a constant one for the end. This simplifies cases like iterating over a whole array or list. Typical usage is:

for (AutoIterator<ARRAYTYPE> it(array); it; ++it) { // ... do something with *it or it-> }

You can specify the current and end iterator explicitly as in

for (AutoIterator<ARRAYTYPE> it(array. Begin () + 1, array. End ()); it; ++it) { // ... do something with *it or it-> }

In addition to the basic foreach protocol, AutoIterator also supports the iterator arithmetic of the underlying iterator, but only in forward direction:

it++; // go to the next element it += 5; // advance by 5 elements cnt = itB - itA; // number of elements from itA to itB
Template Parameters
C Either a collection class with a valid Iterator, or the Iterator class itself.

Public Types

using  Iterator = typename GetIteratorType < C >::type
using  CollectionType = typename GetCollectionType< C >::type
using  ValueType = decltype(*std::declval< Iterator >())
template<typename SUPER >
using  ResultFunctions = ResultIteratorFunctions < SUPER >
using  InvConstAutoIterator = AutoIterator < typename ConstIf < typename std::remove_const< C >::type, ! STD_IS_REPLACEMENT (const, C)>::type >
-  Public Types inherited from ForEachIterator< AutoIterator< C > >
using  IsForEachIterator = std::true_type

公共成员函数

MAXON_ATTRIBUTE_FORCE_INLINE   AutoIterator ( CollectionType &collection)
MAXON_ATTRIBUTE_FORCE_INLINE   AutoIterator (const Iterator &s, const Iterator &e)
MAXON_ATTRIBUTE_FORCE_INLINE   AutoIterator ( CollectionType &collection, Int s, Int e= InvalidArrayIndex )
MAXON_ATTRIBUTE_FORCE_INLINE   AutoIterator ( AutoIterator && src )
  MAXON_OPERATOR_MOVE_ASSIGNMENT ( AutoIterator )
MAXON_ATTRIBUTE_FORCE_INLINE   AutoIterator (const AutoIterator & src )
  MAXON_OPERATOR_COPY_ASSIGNMENT ( AutoIterator )
MAXON_ATTRIBUTE_FORCE_INLINE   AutoIterator ()
MAXON_ATTRIBUTE_FORCE_INLINE   operator Bool () const
MAXON_ATTRIBUTE_FORCE_INLINE ValueType   operator* () const
MAXON_ATTRIBUTE_FORCE_INLINE std::remove_reference< ValueType >::type *  operator-> () const
MAXON_ATTRIBUTE_FORCE_INLINE Bool   operator== (const AutoIterator &b) const
MAXON_ATTRIBUTE_FORCE_INLINE Bool   operator< (const AutoIterator &b) const
  MAXON_OPERATOR_COMPARISON ( AutoIterator )
MAXON_ATTRIBUTE_FORCE_INLINE Bool   operator== (const InvConstAutoIterator &b) const
MAXON_ATTRIBUTE_FORCE_INLINE Bool   operator< (const InvConstAutoIterator &b) const
  MAXON_OPERATOR_COMPARISON ( InvConstAutoIterator )
MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator operator++ ()
MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator   operator++ (int)
MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator operator+= ( Int i)
MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator   operator+ ( Int i) const
MAXON_ATTRIBUTE_FORCE_INLINE Int   operator- (const AutoIterator &b) const
MAXON_ATTRIBUTE_FORCE_INLINE Int   operator- (const Iterator &b) const
MAXON_ATTRIBUTE_FORCE_INLINE void  Erase ( CollectionType &collection)
MAXON_ATTRIBUTE_FORCE_INLINE   operator Iterator & ()
MAXON_ATTRIBUTE_FORCE_INLINE Iterator GetIterator ()
-  Public Member Functions inherited from ForEachIterator< AutoIterator< C > >
MAXON_ATTRIBUTE_FORCE_INLINE   ForEachIterator (ARGS &&... args)
String   ToString (const FormatStatement *formatStatement=nullptr)
AutoIterator < C > &  Find (const T &v)
Int   FindIndex (const T &v)
MAXON_ATTRIBUTE_FORCE_INLINE Bool   Contains (const T &v)
MAXON_ATTRIBUTE_FORCE_INLINE Wrapper  begin ()

Protected Member Functions

MAXON_ATTRIBUTE_FORCE_INLINE   AutoIterator (const Iterator &s, const Iterator &e, Bool removed)

Protected Attributes

Iterator   _it
Iterator   _end

Additional Inherited Members

-  Static Public Member Functions inherited from ForEachIterator< AutoIterator< C > >
static MAXON_ATTRIBUTE_FORCE_INLINE   PRIVATE_MAXON_RBF_SENTINEL (Wrapper) end()

Member Typedef Documentation

◆  Iterator

using Iterator = typename GetIteratorType <C>::type

◆  CollectionType

using CollectionType = typename GetCollectionType<C>::type

◆  ValueType

using ValueType = decltype(*std::declval< Iterator >())

◆  ResultFunctions

using ResultFunctions = ResultIteratorFunctions <SUPER>

◆  InvConstAutoIterator

using InvConstAutoIterator = AutoIterator <typename ConstIf <typename std::remove_const<C>::type, ! STD_IS_REPLACEMENT (const, C)>::type>

构造函数 & 析构函数文档编制

◆  AutoIterator() [1/7]

MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator ( CollectionType collection )
explicit

Use this constructor if you want to iterate over all elements of a collection. Please note that the end iterator of the AutoIterator is a constant. When you modify an array (via Insert(), Append() or Erase() ) the value of its End() iterator will most likely change and trying to iterate over such an array with an AutoIterator while modifying it would crash. To safely erase the current element, use iterator.Erase(collection) .

◆  AutoIterator() [2/7]

MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator ( const Iterator s ,
const Iterator e  
)

use this constructor if you want to iterate from s until e (excluding e)

◆  AutoIterator() [3/7]

MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator ( CollectionType collection ,
Int   s ,
Int   e = InvalidArrayIndex  
)

◆  AutoIterator() [4/7]

MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator ( AutoIterator < C > &&  src )

◆  AutoIterator() [5/7]

MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator ( const AutoIterator < C > &  src )

◆  AutoIterator() [6/7]

MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator ( )

◆  AutoIterator() [7/7]

MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator ( const Iterator s ,
const Iterator e ,
Bool   removed  
)
protected

成员函数文档编制

◆  MAXON_OPERATOR_MOVE_ASSIGNMENT()

MAXON_OPERATOR_MOVE_ASSIGNMENT ( AutoIterator < C >  )

◆  MAXON_OPERATOR_COPY_ASSIGNMENT()

MAXON_OPERATOR_COPY_ASSIGNMENT ( AutoIterator < C >  )

◆  operator Bool()

MAXON_ATTRIBUTE_FORCE_INLINE operator Bool ( ) const
explicit

Operator that returns false when the end of the array has been reached. explicit operator bool() would be ambiguous because it can be used for integer arithmetic. For C++11 we use explicit bool to avoid that implicit conversion, for older compilers void* is returned because you can't do arithmetic with it.

返回
False when the end of the array has been reached.

◆  operator*()

MAXON_ATTRIBUTE_FORCE_INLINE ValueType operator* ( ) const

◆  operator->()

MAXON_ATTRIBUTE_FORCE_INLINE std::remove_reference< ValueType >::type* operator-> ( ) const

◆  operator==() [1/2]

MAXON_ATTRIBUTE_FORCE_INLINE Bool operator== ( const AutoIterator < C > &  b ) const

◆  operator<() [1/2]

MAXON_ATTRIBUTE_FORCE_INLINE Bool operator< ( const AutoIterator < C > &  b ) const

◆  MAXON_OPERATOR_COMPARISON() [1/2]

MAXON_OPERATOR_COMPARISON ( AutoIterator < C >  )

◆  operator==() [2/2]

MAXON_ATTRIBUTE_FORCE_INLINE Bool operator== ( const InvConstAutoIterator < C > &  b ) const

◆  operator<() [2/2]

MAXON_ATTRIBUTE_FORCE_INLINE Bool operator< ( const InvConstAutoIterator < C > &  b ) const

◆  MAXON_OPERATOR_COMPARISON() [2/2]

MAXON_OPERATOR_COMPARISON ( InvConstAutoIterator < C >  )

◆  operator++() [1/2]

MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator & operator++ ( )

◆  operator++() [2/2]

MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator operator++ ( int  )

◆  operator+=()

MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator & operator+= ( Int   i )

◆  operator+()

MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator operator+ ( Int   i ) const

◆  operator-() [1/2]

MAXON_ATTRIBUTE_FORCE_INLINE Int operator- ( const AutoIterator < C > &  b ) const

◆  operator-() [2/2]

MAXON_ATTRIBUTE_FORCE_INLINE Int operator- ( const Iterator b ) const

◆  Erase()

MAXON_ATTRIBUTE_FORCE_INLINE void Erase ( CollectionType collection )

Removes the current iteration value from the underlying collection. The AutoIterator will point to the element behind the removed one afterwards. Example:

for (AutoIterator<COLLECTION> i(coll); i; ) { if (*i == valueToErase) i.Erase(coll); else ++i; }
参数
[in] collection The collection to remove the value from. This has to be the collection which was used to construct this AutoIterator .

◆  operator Iterator &()

MAXON_ATTRIBUTE_FORCE_INLINE operator Iterator & ( )

◆  GetIterator()

MAXON_ATTRIBUTE_FORCE_INLINE Iterator & GetIterator ( )

Member Data Documentation

◆  _it

Iterator _it
protected

◆  _end

Iterator _end
protected
maxon::NonConstArray::Begin
ConstIterator Begin() const
定义: array.h:922
maxon::NonConstArray::End
ConstIterator End() const
定义: array.h:927