ITK  4.0.0
Insight Segmentation and Registration Toolkit
Public Types | Public Member Functions
itk::VariableLengthVector< TValueType > Class Template Reference

Represents an array whose length can be defined at run-time. More...

#include <itkVariableLengthVector.h>

List of all members.

Public Types

typedef TValueType ComponentType
typedef unsigned int ElementIdentifier
typedef NumericTraits
< ValueType >::RealType 
RealValueType
typedef VariableLengthVector Self
typedef TValueType ValueType

Public Member Functions

TValueType * AllocateElements (ElementIdentifier size) const
void DestroyExistingData ()
void Fill (TValueType const &v)
const TValueType * GetDataPointer () const
const TValueType & GetElement (unsigned int i) const
unsigned int GetSize (void) const
const Selfoperator= (TValueType const &v)
const Selfoperator= (const Self &v)
TValueType & operator[] (unsigned int i)
TValueType const & operator[] (unsigned int i) const
void Reserve (ElementIdentifier)
void SetData (TValueType *data, bool LetArrayManageMemory=false)
void SetData (TValueType *data, unsigned int sz, bool LetArrayManageMemory=false)
void SetElement (unsigned int i, const TValueType &value)
void SetSize (unsigned int sz, bool destroyExistingData=true)
 VariableLengthVector (const VariableLengthVector< TValueType > &v)
 VariableLengthVector (unsigned int dimension)
 VariableLengthVector ()
 VariableLengthVector (ValueType *data, unsigned int sz, bool LetArrayManageMemory=false)
 VariableLengthVector (const ValueType *data, unsigned int sz, bool LetArrayManageMemory=false)
 ~VariableLengthVector ()
template<class T >
 VariableLengthVector (const VariableLengthVector< T > &v)
template<class T >
const VariableLengthVector
< TValueType > & 
operator= (const VariableLengthVector< T > &v)
unsigned int Size (void) const
unsigned int GetNumberOfElements (void) const
bool m_LetArrayManageMemory
TValueType * m_Data
ElementIdentifier m_NumElements
template<class T >
Self operator+ (const VariableLengthVector< T > &v) const
template<class T >
Self operator- (const VariableLengthVector< T > &v) const
template<class T >
Self operator* (T s) const
template<class T >
Self operator/ (T s) const
Self operator+ (TValueType s) const
Self operator- (TValueType s) const
Selfoperator-- ()
Selfoperator++ ()
Self operator-- (int)
Self operator++ (int)
template<class T >
Selfoperator-= (const VariableLengthVector< T > &v)
Selfoperator-= (TValueType s)
template<class T >
Selfoperator+= (const VariableLengthVector< T > &v)
Selfoperator+= (TValueType s)
template<class T >
Selfoperator*= (T s)
template<class T >
Selfoperator/= (T s)
Selfoperator- ()
bool operator== (const Self &v) const
bool operator!= (const Self &v) const
RealValueType GetNorm () const
RealValueType GetSquaredNorm () const

Detailed Description

template<typename TValueType>
class itk::VariableLengthVector< TValueType >

Represents an array whose length can be defined at run-time.

This class is templated over the data type. This data-type is meant to be a scalar, such as float, double etc...

Note:
ITK itself provides several classes that can serve as Arrays.
  • FixedArray - Compile time fixed length arrays that's intended to represent an enumerated collection of n entities.
  • Array - Run time resizeable array that is intended to hold a collection of n entities
  • Vector - Compile time fixed length array that is intended to hold a collection of n data types. A vector usually has a mathematical meaning. It should only be used when mathematical operations such as addition, multiplication by a scalar, product etc make sense.
  • VariableLengthVector - Run time array that is intended to hold a collection of scalar data types. Again, it should be used only when mathematical operations on it are relevant. If not, use an Array.
  • Point - Represents the spatial coordinates of a spatial location. Operators on Point reflect geometrical concepts.
For the reasons listed above, you cannot instantiate
 VariableLengthVector< bool > 
.
Design Considerations: We do not derive from vnl_vector to avoid being limited by the explicit template instantiations of vnl_vector and other hacks that vnl folks have been forced to use.
Note:
This work is part of the National Alliance for Medical Image Computing (NAMIC), funded by the National Institutes of Health through the NIH Roadmap for Medical Research, Grant U54 EB005149.
See also:
CovariantVector
SymmetricSecondRankTensor
RGBPixel
DiffusionTensor3D
Wiki Examples:
Examples:

itkVectorImageTest.cxx.

Definition at line 76 of file itkVariableLengthVector.h.


Member Typedef Documentation

template<typename TValueType>
typedef TValueType itk::VariableLengthVector< TValueType >::ComponentType

Definition at line 82 of file itkVariableLengthVector.h.

template<typename TValueType>
typedef unsigned int itk::VariableLengthVector< TValueType >::ElementIdentifier

Typedef used to indicate the number of elements in the vector

Definition at line 87 of file itkVariableLengthVector.h.

template<typename TValueType>
typedef NumericTraits< ValueType >::RealType itk::VariableLengthVector< TValueType >::RealValueType

Definition at line 83 of file itkVariableLengthVector.h.

template<typename TValueType>
typedef VariableLengthVector itk::VariableLengthVector< TValueType >::Self

Definition at line 84 of file itkVariableLengthVector.h.

template<typename TValueType>
typedef TValueType itk::VariableLengthVector< TValueType >::ValueType

The element type stored at each location in the Array.

Definition at line 81 of file itkVariableLengthVector.h.


Constructor & Destructor Documentation

template<typename TValueType>
itk::VariableLengthVector< TValueType >::VariableLengthVector ( )

Default constructor. It is created with an empty array it has to be allocated later by assignment

template<typename TValueType>
itk::VariableLengthVector< TValueType >::VariableLengthVector ( unsigned int  dimension)

Constructor with size. Size can only be changed by assignment

template<typename TValueType>
itk::VariableLengthVector< TValueType >::VariableLengthVector ( ValueType data,
unsigned int  sz,
bool  LetArrayManageMemory = false 
)

Constructor that initializes array with contents from a user supplied buffer. The pointer to the buffer and the length is specified. By default, the array does not manage the memory of the buffer. It merely points to that location and it is the user's responsibility to delete it. If "LetArrayManageMemory" is true, then this class will free the memory when this object is destroyed.

template<typename TValueType>
itk::VariableLengthVector< TValueType >::VariableLengthVector ( const ValueType data,
unsigned int  sz,
bool  LetArrayManageMemory = false 
)

Constructor that initializes array with contents from a user supplied buffer. The pointer to the buffer and the length is specified. By default, the array does not manage the memory of the buffer. It merely points to that location and it is the user's responsibility to delete it. If "LetArrayManageMemory" is true, then this class will free the memory when this object is destroyed.

template<typename TValueType>
template<class T >
itk::VariableLengthVector< TValueType >::VariableLengthVector ( const VariableLengthVector< T > &  v) [inline]

Copy constructor. The reason why the copy constructor and the assignment operator are templated is that it will allow implicit casts to be performed. For instance

 VariableLengthVector< int > vI;
 VariableLengthVector< float > vF( vI );
 or for instance vF = static_cast< VariableLengthVector< float > >( vI );

Definition at line 124 of file itkVariableLengthVector.h.

References itk::VariableLengthVector< TValueType >::AllocateElements(), itk::VariableLengthVector< TValueType >::m_Data, itk::VariableLengthVector< TValueType >::m_LetArrayManageMemory, itk::VariableLengthVector< TValueType >::m_NumElements, and itk::VariableLengthVector< TValueType >::Size().

template<typename TValueType>
itk::VariableLengthVector< TValueType >::VariableLengthVector ( const VariableLengthVector< TValueType > &  v)

Copy constructer.. Override the default non-templated copy constructor that the compiler provides

template<typename TValueType>
itk::VariableLengthVector< TValueType >::~VariableLengthVector ( )

This destructor is not virtual for performance reasons. However, this means that subclasses cannot allocate memory.


Member Function Documentation

template<typename TValueType>
TValueType* itk::VariableLengthVector< TValueType >::AllocateElements ( ElementIdentifier  size) const

Allocate memory of certain size and return it.

Referenced by itk::VariableLengthVector< TValueType >::VariableLengthVector().

template<typename TValueType>
void itk::VariableLengthVector< TValueType >::DestroyExistingData ( )

Destroy data that is allocated internally, if LetArrayManageMemory is true.

template<typename TValueType>
void itk::VariableLengthVector< TValueType >::Fill ( TValueType const &  v)
template<typename TValueType>
const TValueType* itk::VariableLengthVector< TValueType >::GetDataPointer ( ) const [inline]
template<typename TValueType>
const TValueType& itk::VariableLengthVector< TValueType >::GetElement ( unsigned int  i) const [inline]

Get one element

Definition at line 179 of file itkVariableLengthVector.h.

References itk::VariableLengthVector< TValueType >::m_Data.

template<typename TValueType>
RealValueType itk::VariableLengthVector< TValueType >::GetNorm ( ) const
template<typename TValueType>
unsigned int itk::VariableLengthVector< TValueType >::GetNumberOfElements ( void  ) const [inline]

Return the number of elements in the Array

Definition at line 169 of file itkVariableLengthVector.h.

References itk::VariableLengthVector< TValueType >::m_NumElements.

template<typename TValueType>
unsigned int itk::VariableLengthVector< TValueType >::GetSize ( void  ) const [inline]
template<typename TValueType>
RealValueType itk::VariableLengthVector< TValueType >::GetSquaredNorm ( ) const

Returns vector's Squared Euclidean Norm

template<typename TValueType>
bool itk::VariableLengthVector< TValueType >::operator!= ( const Self v) const

Mathematical operators.

Note:
For efficiency, the operators do not check to see of the length of the vectors are the same. For instance it is assumed that if you are adding VariableLengthVector a and b, they are of the same length.
template<typename TValueType>
template<class T >
Self itk::VariableLengthVector< TValueType >::operator* ( s) const [inline]

Mathematical operators.

Note:
For efficiency, the operators do not check to see of the length of the vectors are the same. For instance it is assumed that if you are adding VariableLengthVector a and b, they are of the same length.

Definition at line 281 of file itkVariableLengthVector.h.

References itk::VariableLengthVector< TValueType >::m_Data, and itk::VariableLengthVector< TValueType >::m_NumElements.

template<typename TValueType>
template<class T >
Self& itk::VariableLengthVector< TValueType >::operator*= ( s) [inline]

Mathematical operators.

Note:
For efficiency, the operators do not check to see of the length of the vectors are the same. For instance it is assumed that if you are adding VariableLengthVector a and b, they are of the same length.

Definition at line 403 of file itkVariableLengthVector.h.

References itk::VariableLengthVector< TValueType >::m_Data, and itk::VariableLengthVector< TValueType >::m_NumElements.

template<typename TValueType>
Self itk::VariableLengthVector< TValueType >::operator+ ( TValueType  s) const [inline]

Mathematical operators.

Note:
For efficiency, the operators do not check to see of the length of the vectors are the same. For instance it is assumed that if you are adding VariableLengthVector a and b, they are of the same length.

Definition at line 306 of file itkVariableLengthVector.h.

References itk::VariableLengthVector< TValueType >::m_Data, and itk::VariableLengthVector< TValueType >::m_NumElements.

template<typename TValueType>
template<class T >
Self itk::VariableLengthVector< TValueType >::operator+ ( const VariableLengthVector< T > &  v) const [inline]

Mathematical operators.

Note:
For efficiency, the operators do not check to see of the length of the vectors are the same. For instance it is assumed that if you are adding VariableLengthVector a and b, they are of the same length.

Definition at line 242 of file itkVariableLengthVector.h.

References itk::VariableLengthVector< TValueType >::Size().

template<typename TValueType>
Self& itk::VariableLengthVector< TValueType >::operator++ ( ) [inline]

Mathematical operators.

Note:
For efficiency, the operators do not check to see of the length of the vectors are the same. For instance it is assumed that if you are adding VariableLengthVector a and b, they are of the same length.

Definition at line 337 of file itkVariableLengthVector.h.

References itk::VariableLengthVector< TValueType >::m_Data, and itk::VariableLengthVector< TValueType >::m_NumElements.

template<typename TValueType>
Self itk::VariableLengthVector< TValueType >::operator++ ( int  ) [inline]

Mathematical operators.

Note:
For efficiency, the operators do not check to see of the length of the vectors are the same. For instance it is assumed that if you are adding VariableLengthVector a and b, they are of the same length.

Definition at line 354 of file itkVariableLengthVector.h.

template<typename TValueType>
Self& itk::VariableLengthVector< TValueType >::operator+= ( TValueType  s) [inline]

Mathematical operators.

Note:
For efficiency, the operators do not check to see of the length of the vectors are the same. For instance it is assumed that if you are adding VariableLengthVector a and b, they are of the same length.

Definition at line 393 of file itkVariableLengthVector.h.

References itk::VariableLengthVector< TValueType >::m_Data, and itk::VariableLengthVector< TValueType >::m_NumElements.

template<typename TValueType>
template<class T >
Self& itk::VariableLengthVector< TValueType >::operator+= ( const VariableLengthVector< T > &  v) [inline]

Mathematical operators.

Note:
For efficiency, the operators do not check to see of the length of the vectors are the same. For instance it is assumed that if you are adding VariableLengthVector a and b, they are of the same length.

Definition at line 384 of file itkVariableLengthVector.h.

References itk::VariableLengthVector< TValueType >::m_Data, and itk::VariableLengthVector< TValueType >::m_NumElements.

template<typename TValueType>
Self& itk::VariableLengthVector< TValueType >::operator- ( )

Mathematical operators.

Note:
For efficiency, the operators do not check to see of the length of the vectors are the same. For instance it is assumed that if you are adding VariableLengthVector a and b, they are of the same length.
template<typename TValueType>
template<class T >
Self itk::VariableLengthVector< TValueType >::operator- ( const VariableLengthVector< T > &  v) const [inline]

Mathematical operators.

Note:
For efficiency, the operators do not check to see of the length of the vectors are the same. For instance it is assumed that if you are adding VariableLengthVector a and b, they are of the same length.

Definition at line 262 of file itkVariableLengthVector.h.

References itk::VariableLengthVector< TValueType >::Size().

template<typename TValueType>
Self itk::VariableLengthVector< TValueType >::operator- ( TValueType  s) const [inline]

Mathematical operators.

Note:
For efficiency, the operators do not check to see of the length of the vectors are the same. For instance it is assumed that if you are adding VariableLengthVector a and b, they are of the same length.

Definition at line 317 of file itkVariableLengthVector.h.

References itk::VariableLengthVector< TValueType >::m_Data, and itk::VariableLengthVector< TValueType >::m_NumElements.

template<typename TValueType>
Self& itk::VariableLengthVector< TValueType >::operator-- ( ) [inline]

Mathematical operators.

Note:
For efficiency, the operators do not check to see of the length of the vectors are the same. For instance it is assumed that if you are adding VariableLengthVector a and b, they are of the same length.

Definition at line 328 of file itkVariableLengthVector.h.

References itk::VariableLengthVector< TValueType >::m_Data, and itk::VariableLengthVector< TValueType >::m_NumElements.

template<typename TValueType>
Self itk::VariableLengthVector< TValueType >::operator-- ( int  ) [inline]

Mathematical operators.

Note:
For efficiency, the operators do not check to see of the length of the vectors are the same. For instance it is assumed that if you are adding VariableLengthVector a and b, they are of the same length.

Definition at line 346 of file itkVariableLengthVector.h.

template<typename TValueType>
Self& itk::VariableLengthVector< TValueType >::operator-= ( TValueType  s) [inline]

Mathematical operators.

Note:
For efficiency, the operators do not check to see of the length of the vectors are the same. For instance it is assumed that if you are adding VariableLengthVector a and b, they are of the same length.

Definition at line 373 of file itkVariableLengthVector.h.

References itk::VariableLengthVector< TValueType >::m_Data, and itk::VariableLengthVector< TValueType >::m_NumElements.

template<typename TValueType>
template<class T >
Self& itk::VariableLengthVector< TValueType >::operator-= ( const VariableLengthVector< T > &  v) [inline]

Mathematical operators.

Note:
For efficiency, the operators do not check to see of the length of the vectors are the same. For instance it is assumed that if you are adding VariableLengthVector a and b, they are of the same length.

Definition at line 364 of file itkVariableLengthVector.h.

References itk::VariableLengthVector< TValueType >::m_Data, and itk::VariableLengthVector< TValueType >::m_NumElements.

template<typename TValueType>
template<class T >
Self itk::VariableLengthVector< TValueType >::operator/ ( s) const [inline]

Mathematical operators.

Note:
For efficiency, the operators do not check to see of the length of the vectors are the same. For instance it is assumed that if you are adding VariableLengthVector a and b, they are of the same length.

Definition at line 293 of file itkVariableLengthVector.h.

References itk::VariableLengthVector< TValueType >::m_Data, and itk::VariableLengthVector< TValueType >::m_NumElements.

template<typename TValueType>
template<class T >
Self& itk::VariableLengthVector< TValueType >::operator/= ( s) [inline]

Mathematical operators.

Note:
For efficiency, the operators do not check to see of the length of the vectors are the same. For instance it is assumed that if you are adding VariableLengthVector a and b, they are of the same length.

Definition at line 413 of file itkVariableLengthVector.h.

References itk::VariableLengthVector< TValueType >::m_Data, and itk::VariableLengthVector< TValueType >::m_NumElements.

template<typename TValueType>
const Self& itk::VariableLengthVector< TValueType >::operator= ( const Self v)

Assignment operators

template<typename TValueType>
const Self& itk::VariableLengthVector< TValueType >::operator= ( TValueType const &  v)
template<typename TValueType>
template<class T >
const VariableLengthVector< TValueType >& itk::VariableLengthVector< TValueType >::operator= ( const VariableLengthVector< T > &  v) [inline]
template<typename TValueType>
bool itk::VariableLengthVector< TValueType >::operator== ( const Self v) const

Mathematical operators.

Note:
For efficiency, the operators do not check to see of the length of the vectors are the same. For instance it is assumed that if you are adding VariableLengthVector a and b, they are of the same length.
template<typename TValueType>
TValueType& itk::VariableLengthVector< TValueType >::operator[] ( unsigned int  i) [inline]

Return reference to the element at specified index. No range checking.

Definition at line 173 of file itkVariableLengthVector.h.

References itk::VariableLengthVector< TValueType >::m_Data.

template<typename TValueType>
TValueType const& itk::VariableLengthVector< TValueType >::operator[] ( unsigned int  i) const [inline]

Return reference to the element at specified index. No range checking.

Definition at line 176 of file itkVariableLengthVector.h.

References itk::VariableLengthVector< TValueType >::m_Data.

template<typename TValueType>
void itk::VariableLengthVector< TValueType >::Reserve ( ElementIdentifier  )

Reserves memory of a certain length.

If the array already contains data, the existing data is copied over and new space is allocated, if necessary. If the length to reserve is less than the current number of elements, then an appropriate number of elements are discarded.

template<typename TValueType>
void itk::VariableLengthVector< TValueType >::SetData ( TValueType *  data,
unsigned int  sz,
bool  LetArrayManageMemory = false 
)

Similar to the previous method. In the above method, the size must be seperately set prior to using user-supplied data. This introduces an unnecessary allocation step to be performed. This method avoids it and should be used to import data whereever possible to avoid this. Set the pointer from which the data is imported. If "LetArrayManageMemory" is false, then the application retains the responsibility of freeing the memory for this data. If "LetArrayManageMemory" is true, then this class will free the memory when this object is destroyed.

template<typename TValueType>
void itk::VariableLengthVector< TValueType >::SetData ( TValueType *  data,
bool  LetArrayManageMemory = false 
)

Set the pointer from which the data is imported. If "LetArrayManageMemory" is false, then the application retains the responsibility of freeing the memory for this data. If "LetArrayManageMemory" is true, then this class will free the memory when this object is destroyed.

Referenced by itk::MetaArrayReader::GetOutput().

template<typename TValueType>
void itk::VariableLengthVector< TValueType >::SetElement ( unsigned int  i,
const TValueType &  value 
) [inline]

Set one element

Definition at line 182 of file itkVariableLengthVector.h.

References itk::VariableLengthVector< TValueType >::m_Data.

template<typename TValueType>
void itk::VariableLengthVector< TValueType >::SetSize ( unsigned int  sz,
bool  destroyExistingData = true 
)

Set the size to that given.

If destroyExistingData is false: If the array already contains data, the existing data is copied over and new space is allocated, if necessary. If the length to reserve is less than the current number of elements, then an appropriate number of elements are discarded. If true, the size is set destructively to the length given. If the length is different from the current length, existing data will be lost. The default is true.

Referenced by itk::VariableLengthVector< TValueType >::operator=(), and itk::NumericTraits< VariableLengthVector< T > >::SetLength().

template<typename TValueType>
unsigned int itk::VariableLengthVector< TValueType >::Size ( void  ) const [inline]

Member Data Documentation

template<typename TValueType>
TValueType* itk::VariableLengthVector< TValueType >::m_Data [private]
template<typename TValueType>
bool itk::VariableLengthVector< TValueType >::m_LetArrayManageMemory [private]

Mathematical operators.

Note:
For efficiency, the operators do not check to see of the length of the vectors are the same. For instance it is assumed that if you are adding VariableLengthVector a and b, they are of the same length.

Definition at line 438 of file itkVariableLengthVector.h.

Referenced by itk::VariableLengthVector< TValueType >::VariableLengthVector().

template<typename TValueType>
ElementIdentifier itk::VariableLengthVector< TValueType >::m_NumElements [private]

The documentation for this class was generated from the following file: