34 #ifndef __itkVectorDataContainer_h
35 #define __itkVectorDataContainer_h
37 #include "itkDataObject.h"
38 #include "itkObjectFactory.h"
69 typename TElementIdentifier,
74 public std::vector< TElement >
102 DataObject(), VectorType() {}
104 DataObject(), VectorType( n ) {}
106 DataObject(), VectorType( n, x ) {}
108 DataObject(), VectorType( r ) {}
109 template<
typename InputIterator >
111 DataObject(), VectorType( first, last ) {}
131 return dynamic_cast< STLContainerType &
>( *this );
138 return dynamic_cast< const STLContainerType &
>( *this );
153 Iterator( size_type d,
const VectorIterator & i ) : m_Pos( d ), m_Iter( i ) {}
156 Iterator * operator->() {
return this; }
157 Iterator & operator++() { ++m_Pos; ++m_Iter;
return *
this; }
158 Iterator operator++(
int ) {
Iterator temp( *
this ); ++m_Pos; ++m_Iter;
return temp; }
161 Iterator & operator--() { --m_Pos; --m_Iter;
return *
this; }
162 Iterator operator--(
int ) {
Iterator temp( *
this ); --m_Pos; --m_Iter;
return temp; }
164 bool operator==(
const Iterator & r )
const {
return m_Iter == r.m_Iter; }
165 bool operator!=(
const Iterator & r )
const {
return m_Iter != r.m_Iter; }
166 bool operator==(
const ConstIterator & r )
const {
return m_Iter == r.m_Iter; }
167 bool operator!=(
const ConstIterator & r )
const {
return m_Iter != r.m_Iter; }
170 ElementIdentifier Index(
void )
const {
return static_cast< ElementIdentifier
>( m_Pos ); }
173 Element & Value(
void )
const {
return *m_Iter; }
178 VectorIterator m_Iter;
189 ConstIterator( size_type d,
const VectorConstIterator & i ) : m_Pos( d ), m_Iter( i ) {}
194 ConstIterator & operator++() { ++m_Pos; ++m_Iter;
return *
this; }
198 ConstIterator & operator--() { --m_Pos; --m_Iter;
return *
this; }
201 ConstIterator & operator=(
const Iterator & r ) { m_Pos = r.m_Pos; m_Iter = r.m_Iter;
return *
this; }
203 bool operator==(
const Iterator & r )
const {
return m_Iter == r.m_Iter; }
204 bool operator!=(
const Iterator & r )
const {
return m_Iter != r.m_Iter; }
205 bool operator==(
const ConstIterator & r )
const {
return m_Iter == r.m_Iter; }
206 bool operator!=(
const ConstIterator & r )
const {
return m_Iter != r.m_Iter; }
209 ElementIdentifier Index(
void )
const {
return static_cast< ElementIdentifier
>( m_Pos ); }
212 const Element & Value(
void )
const {
return *m_Iter; }
217 VectorConstIterator m_Iter;
231 Element &
ElementAt( ElementIdentifier );
239 const Element &
ElementAt( ElementIdentifier )
const;
255 Element
GetElement( ElementIdentifier )
const;
261 void SetElement( ElementIdentifier, Element );
320 unsigned long Size(
void )
const;
331 void Reserve( ElementIdentifier );
350 #ifndef ITK_MANUAL_INSTANTIATION
351 #include "itkVectorDataContainer.hxx"
354 #endif // end __itkVectorDataContainer_h
VectorDataContainer(size_type n)
ConstIterator Begin(void) const
ConstIterator End(void) const
VectorDataContainer(const Self &r)
bool GetElementIfIndexExists(ElementIdentifier, Element *) const
bool IndexExists(ElementIdentifier) const
void DeleteIndex(ElementIdentifier)
Element & CreateElementAt(ElementIdentifier)
__host__ __device__ void operator-=(int2 &a, int2 b)
SmartPointer< const Self > ConstPointer
VectorDataContainer(size_type n, const Element &x)
friend class ConstIterator
STLContainerType & CastToSTLContainer()
Define a front-end to the STL "vector" container that conforms to the IndexedContainerInterface.
__host__ __device__ int2 operator*(int2 a, int2 b)
void CreateIndex(ElementIdentifier)
void SetElement(ElementIdentifier, Element)
const STLContainerType & CastToSTLConstContainer() const
std::vector< Element > VectorType
VectorType::size_type size_type
SmartPointer< Self > Pointer
void InsertElement(ElementIdentifier, Element)
Element GetElement(ElementIdentifier) const
VectorDataContainer(InputIterator first, InputIterator last)
unsigned long Size(void) const
Element & ElementAt(ElementIdentifier)
__host__ __device__ void operator+=(int2 &a, int2 b)
void Reserve(ElementIdentifier)
VectorType::iterator VectorIterator
VectorType::const_iterator VectorConstIterator
TElementIdentifier ElementIdentifier
VectorType STLContainerType