BlockArray< T, BLOCK_SIZE_EXPONENT, MEMFLAGS, ALLOCATOR >::IteratorTemplate< CONSTITERATOR > Class Template Reference

#include <blockarray.h>

详细描述

template<typename T, Int BLOCK_SIZE_EXPONENT = BLOCKARRAY_DEFAULT_SIZE_EXPONENT, BLOCKARRAYFLAGS MEMFLAGS = BLOCKARRAYFLAGS::NONE, typename ALLOCATOR = DefaultAllocator>
template<Bool CONSTITERATOR>
class maxon::BlockArray< T, BLOCK_SIZE_EXPONENT, MEMFLAGS, ALLOCATOR >::IteratorTemplate< CONSTITERATOR >

The BlockArray iterator uses several tricks to make iteration faster than using a for loop with operator []. Therefore you should use it (or the C++11 range based for loop) to iterate over the array or parts of it.

You can use an iterator almost like a pointer, e.g.

it++; // go to the next element it--; // go to the previous element it += 5; // advance by 5 elements it -= 3; // go back 3 elements cnt = itB - itA; // number of elements from itA to itB it = array. Begin (); // iterator to the first element of the array *it = value; // assign value to the elements referenced by the iterator value = *value; // get value of the element referenced by the iterator

Public Types

using  CollectionType = typename ConstIf < BlockArray , CONSTITERATOR >:: type
using  类型 = typename ConstIf < T, CONSTITERATOR >:: type

公共成员函数

  IteratorTemplate ( CollectionType &a, Int start=0)
  IteratorTemplate ( CollectionType *a, Int blockIdx, Int localIdx)
  IteratorTemplate ( CollectionType *a=nullptr, BlockType *block=nullptr, BlockIterator it= BlockIterator (), BlockIterator end = BlockIterator ())
  IteratorTemplate (const IteratorTemplate & src )
IteratorTemplate operator= (const IteratorTemplate & src )
  operator ConstIterator & ()
template<Bool STRIDED>
MAXON_ATTRIBUTE_FORCE_INLINE IteratorTemplate   GetBlock ( Block < 类型 , STRIDED > &block) const
Int   GetBlockIndexAndLocalIndex ( Int &localIdx) const
  operator Bool () const
类型 GetPtr () const
类型 operator* () const
类型 operator-> () const
Bool   operator== (const IteratorTemplate &b) const
Bool   operator< (const IteratorTemplate &b) const
  MAXON_OPERATOR_COMPARISON ( IteratorTemplate )
IteratorTemplate operator++ ()
const IteratorTemplate   operator++ (int)
IteratorTemplate operator+= ( Int i)
IteratorTemplate   operator+ ( Int i) const
IteratorTemplate operator-- ()
const IteratorTemplate   operator-- (int)
IteratorTemplate operator-= ( Int i)
IteratorTemplate   operator- ( Int i) const
Int   operator- (const IteratorTemplate &b) const

静态公共属性

static const Bool   isLinearIterator

Private Types

using  BlockIterator = typename std::conditional< CONSTITERATOR, typename ArrayBlock::ConstIterator , typename ArrayBlock::Iterator >:: type
using  BlockType = typename ConstIf < ArrayBlock , CONSTITERATOR >:: type

Private Attributes

CollectionType _array
BlockType _block
BlockIterator   _iterator
BlockIterator   _end

Member Typedef Documentation

◆  BlockIterator

using BlockIterator = typename std::conditional<CONSTITERATOR, typename ArrayBlock::ConstIterator , typename ArrayBlock::Iterator >:: type
private

◆  BlockType

using BlockType = typename ConstIf < ArrayBlock , CONSTITERATOR>:: type
private

◆  CollectionType

using CollectionType = typename ConstIf < BlockArray , CONSTITERATOR>:: type

◆  类型

using 类型 = typename ConstIf <T, CONSTITERATOR>:: type

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

◆  IteratorTemplate() [1/4]

IteratorTemplate ( CollectionType a ,
Int   start = 0  
)
explicit

◆  IteratorTemplate() [2/4]

IteratorTemplate ( CollectionType a ,
Int   blockIdx ,
Int   localIdx  
)
explicit

◆  IteratorTemplate() [3/4]

IteratorTemplate ( CollectionType a = nullptr ,
BlockType block = nullptr ,
BlockIterator   it = BlockIterator() ,
BlockIterator   end = BlockIterator()  
)
explicit

◆  IteratorTemplate() [4/4]

IteratorTemplate ( const IteratorTemplate < CONSTITERATOR > &  src )

成员函数文档编制

◆  operator=()

IteratorTemplate & operator= ( const IteratorTemplate < CONSTITERATOR > &  src )

◆  operator ConstIterator &()

operator ConstIterator & ( )

◆  GetBlock()

MAXON_ATTRIBUTE_FORCE_INLINE IteratorTemplate GetBlock ( Block < 类型 , STRIDED > &  block ) const

Determines a contiguous block of array elements to which the iterator points.

参数
[out] block Block which contains the element..
返回
Start iterator of the block.

◆  GetBlockIndexAndLocalIndex()

Int GetBlockIndexAndLocalIndex ( Int localIdx ) const

◆  operator Bool()

operator Bool ( ) const
explicit
返回
true if the iterator points to an element.

◆  GetPtr()

类型 * GetPtr ( ) const

◆  operator*()

类型 & operator* ( ) const

◆  operator->()

类型 * operator-> ( ) const

◆  operator==()

Bool operator== ( const IteratorTemplate < CONSTITERATOR > &  b ) const

◆  operator<()

Bool operator< ( const IteratorTemplate < CONSTITERATOR > &  b ) const

◆  MAXON_OPERATOR_COMPARISON()

MAXON_OPERATOR_COMPARISON ( IteratorTemplate < CONSTITERATOR >  )

◆  operator++() [1/2]

IteratorTemplate & operator++ ( )

◆  operator++() [2/2]

const IteratorTemplate operator++ ( int  )

◆  operator+=()

IteratorTemplate & operator+= ( Int   i )

◆  operator+()

IteratorTemplate operator+ ( Int   i ) const

◆  operator--() [1/2]

IteratorTemplate & operator-- ( )

◆  operator--() [2/2]

const IteratorTemplate operator-- ( int  )

◆  operator-=()

IteratorTemplate & operator-= ( Int   i )

◆  operator-() [1/2]

IteratorTemplate operator- ( Int   i ) const

◆  operator-() [2/2]

Int operator- ( const IteratorTemplate < CONSTITERATOR > &  b ) const

Member Data Documentation

◆  isLinearIterator

const Bool isLinearIterator static

◆  _array

CollectionType * _array
private

◆  _block

BlockType * _block
private

◆  _iterator

BlockIterator _iterator
private

◆  _end

BlockIterator _end
private
maxon::NonConstArray::Begin
ConstIterator Begin() const
定义: array.h:922