34 #ifndef __itkVectorDataContainer_h
35 #define __itkVectorDataContainer_h
37 #include "itkDataObject.h"
38 #include "itkObjectFactory.h"
69 typename TElementIdentifier,
74 public std::vector<TElement>
106 template <
typename InputIterator>
134 friend class Iterator;
135 friend class ConstIterator;
143 Iterator(size_type d,
const VectorIterator& i): m_Pos(d), m_Iter(i) {}
146 Iterator* operator-> () {
return this; }
147 Iterator& operator++ () { ++m_Pos; ++m_Iter;
return *
this; }
148 Iterator operator++ (
int) { Iterator temp(*
this); ++m_Pos; ++m_Iter;
return temp; }
149 Iterator& operator-- () { --m_Pos; --m_Iter;
return *
this; }
150 Iterator operator-- (
int) { Iterator temp(*
this); --m_Pos; --m_Iter;
return temp; }
152 bool operator == (
const Iterator& r)
const {
return m_Iter == r.m_Iter; }
153 bool operator != (
const Iterator& r)
const {
return m_Iter != r.m_Iter; }
154 bool operator == (
const ConstIterator& r)
const {
return m_Iter == r.m_Iter; }
155 bool operator != (
const ConstIterator& r)
const {
return m_Iter != r.m_Iter; }
158 ElementIdentifier Index(
void)
const {
return static_cast<ElementIdentifier
>( m_Pos ); }
161 Element& Value(
void)
const {
return *m_Iter; }
165 VectorIterator m_Iter;
166 friend class ConstIterator;
175 ConstIterator(size_type d,
const VectorConstIterator& i): m_Pos(d), m_Iter(i) {}
176 ConstIterator(
const Iterator& r) { m_Pos = r.m_Pos; m_Iter = r.m_Iter; }
178 ConstIterator&
operator* () {
return *
this; }
179 ConstIterator* operator-> () {
return this; }
180 ConstIterator& operator++ () { ++m_Pos; ++m_Iter;
return *
this; }
181 ConstIterator operator++ (
int) { ConstIterator temp(*
this); ++m_Pos; ++m_Iter;
return temp; }
182 ConstIterator& operator-- () { --m_Pos; --m_Iter;
return *
this; }
183 ConstIterator operator-- (
int) { ConstIterator temp(*
this); --m_Pos; --m_Iter;
return temp; }
185 ConstIterator& operator = (
const Iterator& r) { m_Pos = r.m_Pos; m_Iter = r.m_Iter;
return *
this; }
187 bool operator == (
const Iterator& r)
const {
return m_Iter == r.m_Iter; }
188 bool operator != (
const Iterator& r)
const {
return m_Iter != r.m_Iter; }
189 bool operator == (
const ConstIterator& r)
const {
return m_Iter == r.m_Iter; }
190 bool operator != (
const ConstIterator& r)
const {
return m_Iter != r.m_Iter; }
193 ElementIdentifier Index(
void)
const {
return static_cast<ElementIdentifier
>( m_Pos ); }
196 const Element& Value(
void)
const {
return *m_Iter; }
200 VectorConstIterator m_Iter;
201 friend class Iterator;
214 Element& ElementAt( ElementIdentifier );
222 const Element& ElementAt( ElementIdentifier )
const;
232 Element& CreateElementAt( ElementIdentifier );
238 Element GetElement( ElementIdentifier )
const;
244 void SetElement( ElementIdentifier, Element );
251 void InsertElement( ElementIdentifier, Element );
257 bool IndexExists( ElementIdentifier )
const;
264 bool GetElementIfIndexExists( ElementIdentifier, Element * )
const;
271 void CreateIndex( ElementIdentifier );
278 void DeleteIndex( ElementIdentifier );
283 ConstIterator Begin(
void )
const;
288 ConstIterator End(
void )
const;
293 Iterator Begin(
void );
298 Iterator End(
void );
303 unsigned long Size(
void )
const;
314 void Reserve( ElementIdentifier );
322 void Squeeze(
void );
327 void Initialize(
void );
333 #ifndef ITK_MANUAL_INSTANTIATION
334 #include "itkVectorDataContainer.txx"
337 #endif // end __itkVectorDataContainer_h
VectorDataContainer(size_type n)
VectorDataContainer(const Self &r)
VectorDataContainer(size_type n, const Element &x)
STLContainerType & CastToSTLContainer()
Define a front-end to the STL "vector" container that conforms to the IndexedContainerInterface.
__host__ __device__ int2 operator*(int2 a, int2 b)
SmartPointer< Self > Pointer
const STLContainerType & CastToSTLConstContainer() const
VectorType::size_type size_type
VectorDataContainer(InputIterator first, InputIterator last)
SmartPointer< const Self > ConstPointer
std::vector< Element > VectorType
VectorType::iterator VectorIterator
VectorType::const_iterator VectorConstIterator
TElementIdentifier ElementIdentifier
VectorType STLContainerType