ITK
5.0.0
Insight Segmentation and Registration Toolkit
|
#include <itkConstantBoundaryCondition.h>
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...
Arrays
. n
entities.n
entitiesn
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.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.m_LetArrayManageMemory
is true, m_Data
is deletable (whether it's null or pointing to something with no elements. i.e. m_NumElements
may be 0 and yet m_Data
may be not null.) Definition at line 27 of file itkConstantBoundaryCondition.h.
Classes | |
struct | AllocateRootPolicy |
struct | AlwaysReallocate |
struct | DontShrinkToFit |
struct | DumpOldValues |
struct | KeepOldValues |
struct | KeepValuesRootPolicy |
struct | NeverReallocate |
struct | ShrinkToFit |
Public Types | |
using | ComponentType = TValue |
using | ElementIdentifier = unsigned int |
using | RealValueType = typename NumericTraits< ValueType >::RealType |
using | Self = VariableLengthVector |
using | ValueType = TValue |
Public Member Functions | |
TValue * | AllocateElements (ElementIdentifier size) const |
void | DestroyExistingData () |
Self & | FastAssign (const Self &v) |
void | Fill (TValue const &v) |
const TValue * | GetDataPointer () const |
const TValue & | GetElement (unsigned int i) const |
RealValueType | GetNorm () const |
RealValueType | GetSquaredNorm () const |
bool | IsAProxy () const |
bool | operator!= (const Self &v) const |
Self & | operator- () |
Self & | operator= (Self &&v) noexcept |
template<typename TExpr1 , typename TExpr2 , typename TBinaryOp > | |
Self & | operator= (VariableLengthVectorExpression< TExpr1, TExpr2, TBinaryOp > const &rhs) |
Self & | operator= (const Self &v) |
Self & | operator= (TValue const &v) |
bool | operator== (const Self &v) const |
TValue & | operator[] (unsigned int i) |
TValue const & | operator[] (unsigned int i) const |
void | SetData (TValue *data, bool LetArrayManageMemory=false) |
void | SetData (TValue *data, unsigned int sz, bool LetArrayManageMemory=false) |
void | SetElement (unsigned int i, const TValue &value) |
template<typename TReallocatePolicy , typename TKeepValuesPolicy > | |
void | SetSize (unsigned int sz, TReallocatePolicy reallocatePolicy, TKeepValuesPolicy keepValues) |
VariableLengthVector () | |
VariableLengthVector (unsigned int dimension) | |
VariableLengthVector (ValueType *data, unsigned int sz, bool LetArrayManageMemory=false) | |
VariableLengthVector (const ValueType *data, unsigned int sz, bool LetArrayManageMemory=false) | |
VariableLengthVector (const VariableLengthVector< TValue > &v) | |
VariableLengthVector (Self &&v) noexcept | |
template<typename TExpr1 , typename TExpr2 , typename TBinaryOp > | |
VariableLengthVector (VariableLengthVectorExpression< TExpr1, TExpr2, TBinaryOp > const &rhs) | |
~VariableLengthVector () | |
template<typename T > | |
VariableLengthVector (const VariableLengthVector< T > &v) | |
void | Swap (Self &v) noexcept |
template<typename T > | |
Self & | operator= (const VariableLengthVector< T > &v) |
unsigned int | Size () const |
unsigned int | GetSize () const |
unsigned int | GetNumberOfElements () const |
void | SetSize (unsigned int sz, bool destroyExistingData=true) |
void | Reserve (ElementIdentifier size) |
Self & | operator-- () |
Self & | operator++ () |
Self | operator-- (int) |
Self | operator++ (int) |
template<typename T > | |
Self & | operator-= (const VariableLengthVector< T > &v) |
Self & | operator-= (TValue s) |
template<typename T > | |
Self & | operator+= (const VariableLengthVector< T > &v) |
Self & | operator+= (TValue s) |
template<typename TExpr1 , typename TExpr2 , typename TBinaryOp > | |
Self & | operator+= (VariableLengthVectorExpression< TExpr1, TExpr2, TBinaryOp > const &rhs) |
template<typename TExpr1 , typename TExpr2 , typename TBinaryOp > | |
Self & | operator-= (VariableLengthVectorExpression< TExpr1, TExpr2, TBinaryOp > const &rhs) |
template<typename T > | |
Self & | operator*= (T s) |
Self & | operator*= (TValue s) |
template<typename T > | |
Self & | operator/= (T s) |
Private Attributes | |
TValue * | m_Data |
bool | m_LetArrayManageMemory {true} |
ElementIdentifier | m_NumElements {0} |
Related Functions | |
(Note that these are not member functions.) | |
template<typename TExpr1 , typename TExpr2 > | |
mpl::EnableIf < Details::op::CanBeMultiplied < TExpr1, TExpr2 > , VariableLengthVectorExpression < TExpr1, TExpr2, Details::op::Mult > >::Type | operator* (TExpr1 const &lhs, TExpr2 const &rhs) |
template<typename TExpr1 , typename TExpr2 > | |
mpl::EnableIf < Details::op::CanBeAddedOrSubtracted < TExpr1, TExpr2 > , VariableLengthVectorExpression < TExpr1, TExpr2, Details::op::Plus > >::Type | operator+ (TExpr1 const &lhs, TExpr2 const &rhs) |
template<typename TExpr1 , typename TExpr2 > | |
mpl::EnableIf < Details::op::CanBeAddedOrSubtracted < TExpr1, TExpr2 > , VariableLengthVectorExpression < TExpr1, TExpr2, Details::op::Sub > >::Type | operator- (TExpr1 const &lhs, TExpr2 const &rhs) |
template<typename TExpr1 , typename TExpr2 > | |
mpl::EnableIf < Details::op::CanBeDivided < TExpr1, TExpr2 > , VariableLengthVectorExpression < TExpr1, TExpr2, Details::op::Div > >::Type | operator/ (TExpr1 const &lhs, TExpr2 const &rhs) |
Serialization | |
template<typename TValue > | |
std::ostream & | operator<< (std::ostream &os, const VariableLengthVector< TValue > &arr) |
Standard compliance functions | |
template<typename T > | |
void | swap (VariableLengthVector< T > &l_, VariableLengthVector< T > &r_) noexcept |
using itk::VariableLengthVector< TValue >::ComponentType = TValue |
Definition at line 310 of file itkVariableLengthVector.h.
using itk::VariableLengthVector< TValue >::ElementIdentifier = unsigned int |
Typedef used to indicate the number of elements in the vector
Definition at line 315 of file itkVariableLengthVector.h.
using itk::VariableLengthVector< TValue >::RealValueType = typename NumericTraits< ValueType >::RealType |
Definition at line 311 of file itkVariableLengthVector.h.
using itk::VariableLengthVector< TValue >::Self = VariableLengthVector |
Definition at line 312 of file itkVariableLengthVector.h.
using itk::VariableLengthVector< TValue >::ValueType = TValue |
The element type stored at each location in the Array.
Definition at line 309 of file itkVariableLengthVector.h.
itk::VariableLengthVector< TValue >::VariableLengthVector | ( | ) |
|
explicit |
itk::VariableLengthVector< TValue >::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.
m_Data == data
m_NumElements == sz
m_LetArrayManageMemory == LetArrayManageMemory
itk::VariableLengthVector< TValue >::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.
VariableLengthVector
interface. Use this constructor with care as this may lead to undefined behaviour. Prefer using VariableLengthVector<const TValue>
instead of VariableLengthVector<TValue>
in case we which to use this constructor.m_Data == data
m_NumElements == sz
m_LetArrayManageMemory == LetArrayManageMemory
|
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
. Prefer to directly use the assignment converting operator in code where uses of static_cast<>
would be required.m_Data
is not null and points to an array of m_NumElements
, if m_NumElements
is 0, otherwise it's null. m_NumElements
is v.GetSize()
m_LetArrayManageMemory
is true Definition at line 393 of file itkVariableLengthVector.h.
References itk::VariableLengthVector< TValue >::Size().
itk::VariableLengthVector< TValue >::VariableLengthVector | ( | const VariableLengthVector< TValue > & | v | ) |
Copy constructor. Overrides the default non-templated copy constructor that the compiler provides.
m_Data
is not null and points to an array of m_NumElements
, if m_NumElements
is 0, otherwise it's null. m_NumElements
is v.GetSize()
m_LetArrayManageMemory
is true
|
noexcept |
C++11 Move Constructor.
v
is destructible and assignable. m_NumElements == 0
m_LetArrayManageMemory == true
m_Data == nullptr
v
data. itk::VariableLengthVector< TValue >::VariableLengthVector | ( | VariableLengthVectorExpression< TExpr1, TExpr2, TBinaryOp > const & | rhs | ) |
Constructor from an Expression Template vector.
TExpr1 | Type of the left sub-expression |
TExpr2 | Type of the right sub-expression |
TBinaryOp | Binary Operation to apply to both sub-expressions. |
[in] | rhs | Non evaluated Expression Template. |
Builds the new VariableLengthVector
with an expression template. The code loops over all components from the template expression, and evaluates them on the fly to fill the content of the new vector.
m_Data
is not null and points to an array of m_NumElements
, even if m_NumElements
is 0 *this == rhs
m_NumElements
is rhs.GetSize()
m_LetArrayManageMemory
is true itk::VariableLengthVector< TValue >::~VariableLengthVector | ( | ) |
This destructor is not virtual for performance reasons. However, this means that subclasses cannot allocate memory.
TValue* itk::VariableLengthVector< TValue >::AllocateElements | ( | ElementIdentifier | size | ) | const |
Allocate memory of certain size and return it.
size
elements (0 is a valid parameter). void itk::VariableLengthVector< TValue >::DestroyExistingData | ( | ) |
Destroy data that is allocated internally, if LetArrayManageMemory
is true.
Self& itk::VariableLengthVector< TValue >::FastAssign | ( | const Self & | v | ) |
Fast Assignment.
m_LetArrayManageMemory
is true: the VariableLengthVector
is not a proxy, checked with an assertion. Call SetSize(GetSize(), NeverReallocate(), DumpOldValues())
to ensure a vector is not a proxy anymore. void itk::VariableLengthVector< TValue >::Fill | ( | TValue const & | v | ) |
Set the all the elements of the array to the specified value.
Referenced by itk::MaskImageFilter< TInputImage, TMaskImage, TOutputImage >::CheckOutsideValue(), itk::LinearInterpolateImageFunction< TInputImage, TCoordRep >::MakeZeroInitializer(), itk::NumericTraits< VariableLengthVector< T > >::max(), itk::NumericTraits< VariableLengthVector< T > >::min(), itk::NumericTraits< VariableLengthVector< T > >::NonpositiveMin(), itk::NumericTraits< VariableLengthVector< T > >::OneValue(), itk::NumericTraits< VariableLengthVector< T > >::SetLength(), and itk::NumericTraits< VariableLengthVector< T > >::ZeroValue().
|
inline |
Definition at line 724 of file itkVariableLengthVector.h.
Referenced by itk::MetaArrayWriter::SetInput().
|
inline |
Get one element
Definition at line 586 of file itkVariableLengthVector.h.
RealValueType itk::VariableLengthVector< TValue >::GetNorm | ( | ) | const |
Returns vector's Euclidean Norm
Referenced by itk::DefaultConvertPixelTraits< VariableLengthVector< VComponent > >::GetScalarValue().
|
inline |
Return the number of elements in the Array
Definition at line 576 of file itkVariableLengthVector.h.
|
inline |
Return the number of elements in the Array
Definition at line 575 of file itkVariableLengthVector.h.
Referenced by itk::MaskImageFilter< TInputImage, TMaskImage, TOutputImage >::CheckOutsideValue(), itk::NumericTraits< VariableLengthVector< T > >::GetLength(), itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::MathEMAMAMAM(), and itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::MathSMAMAMAM().
RealValueType itk::VariableLengthVector< TValue >::GetSquaredNorm | ( | ) | const |
Returns vector's squared Euclidean Norm
|
inline |
letArrayManageMemory getter.
Definition at line 943 of file itkVariableLengthVector.h.
bool itk::VariableLengthVector< TValue >::operator!= | ( | const Self & | v | ) | const |
|
inline |
Multiply each element of the vector by a scalar 's'. The scalar value is cast to the current vector element type prior to multiplication.
None |
Definition at line 882 of file itkVariableLengthVector.h.
|
inline |
Multiply each element of the vector by a scalar 's'.
None |
Definition at line 896 of file itkVariableLengthVector.h.
|
inline |
Prefix operator that adds 1 to each element of the vector.
Definition at line 739 of file itkVariableLengthVector.h.
|
inline |
Postfix operator that adds 1 to each element of the vector.
Definition at line 761 of file itkVariableLengthVector.h.
|
inline |
Element-wise addition of vector 'v' to the current vector. The vectors do not have to have the same element type. The input vector elements are cast to the current vector element type before the addition is performed.
None |
Definition at line 812 of file itkVariableLengthVector.h.
|
inline |
Add scalar 's' to each element of the vector.
Definition at line 824 of file itkVariableLengthVector.h.
|
inline |
Compound addition operator with a expression template vector.
TExpr1 | Type of the left sub-expression |
TExpr2 | Type of the right sub-expression |
TBinaryOp | Binary Operation to apply to both sub-expressions. |
[in] | rhs | Non evaluated Expression Template. |
Size() == rhs.Size()
, checked with an assertion Definition at line 844 of file itkVariableLengthVector.h.
Self& itk::VariableLengthVector< TValue >::operator- | ( | ) |
Negates each vector element.
VariableLengthVector
, it modifies the current object.
|
inline |
Prefix operator that subtracts 1 from each element of the vector.
Definition at line 728 of file itkVariableLengthVector.h.
|
inline |
Postfix operator that subtracts 1 from each element of the vector.
Definition at line 751 of file itkVariableLengthVector.h.
|
inline |
Element-wise subtraction of vector 'v' from the current vector. The vectors do not have to have the same element type. The input vector elements are cast to the current vector element type before the subtraction is performed.
None |
Definition at line 780 of file itkVariableLengthVector.h.
|
inline |
Subtract scalar 's' from each element of the current vector.
Definition at line 792 of file itkVariableLengthVector.h.
|
inline |
Compound subtraction operator with a expression template vector.
TExpr1 | Type of the left sub-expression |
TExpr2 | Type of the right sub-expression |
TBinaryOp | Binary Operation to apply to both sub-expressions. |
[in] | rhs | Non evaluated Expression Template. |
Size() == rhs.Size()
, checked with an assertion Definition at line 865 of file itkVariableLengthVector.h.
|
inline |
Divide vector elements by a scalar 's'. The vector does not have to have the same element type as the scalar type. Both the scalar and vector elements are cast to the RealValueType prior to division, and the result is cast to the ValueType.
None |
Definition at line 913 of file itkVariableLengthVector.h.
|
noexcept |
C++11 Move assignement operator.
v
shall not be the same as the current object v
is destructible and assignable. m_NumElements == 0
m_LetArrayManageMemory == true
m_Data == nullptr
v
data. Self& itk::VariableLengthVector< TValue >::operator= | ( | VariableLengthVectorExpression< TExpr1, TExpr2, TBinaryOp > const & | rhs | ) |
Assignment from an Expression Template vector.
TExpr1 | Type of the left sub-expression |
TExpr2 | Type of the right sub-expression |
TBinaryOp | Binary Operation to apply to both sub-expressions. |
[in] | rhs | Non evaluated Expression Template. |
Resets the new VariableLengthVector
with an expression template. The code loops over all components from the template expression, and evaluates them on the fly to fill the content of the current vector.
VariableLengthVector
proxy, the referenced values are left unchanged. m_Data
is not null and points to an array of m_NumElements
, if m_NumElements
is not 0. m_Data
may be null otherwise (an empty vector is assigned into another empty vector) m_LetArrayManageMemory
is true GetSize() == rhs.GetSize()
*this == rhs
|
inline |
Converting assignment operator.
TValue
assignment is a noexcept
operation.VariableLengthVector
proxy, the referenced values are left unchanged. m_LetArrayManageMemory
is true GetSize() == v.GetSize()
, modulo precision *this == v
Definition at line 518 of file itkVariableLengthVector.h.
References itk::VariableLengthVector< TValue >::Size().
Self& itk::VariableLengthVector< TValue >::operator= | ( | const Self & | v | ) |
Copy-Assignment operator.
TValue
assignment is a noexcept
operation.VariableLengthVector
proxy, the referenced values are left unchanged. m_Data
is not null and points to an array of m_NumElements
, if m_NumElements
is not 0. m_Data
may be null otherwise (an empty vector is assigned into another empty vector) m_LetArrayManageMemory
is true GetSize() == v.GetSize()
*this == v
Self& itk::VariableLengthVector< TValue >::operator= | ( | TValue const & | v | ) |
Assignment operator from a numeric value.
m_LetArrayManageMemory
is true, but it is unchecked. If this operator is called on a VariableLengthVector
proxy, referenced values will be overwritten. [m_Data, m_Data+GetSize())
will be equal to v
, modulo precision bool itk::VariableLengthVector< TValue >::operator== | ( | const Self & | v | ) | const |
|
inline |
Return reference to the element at specified index. No range checking.
Definition at line 580 of file itkVariableLengthVector.h.
|
inline |
Return reference to the element at specified index. No range checking.
Definition at line 583 of file itkVariableLengthVector.h.
void itk::VariableLengthVector< TValue >::Reserve | ( | ElementIdentifier | size | ) |
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. \post \c m_Data is not null and can hold \c size elements. \post \c m_LetArrayManageMemory may be left unchanged if there already are enough elements. \note You may prefer instead `SetSize(N, DontShrinkToFit(), KeepOldValues());` that ensures that the array is not a proxy at the end of the operation.
void itk::VariableLengthVector< TValue >::SetData | ( | TValue * | 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.
data
shall match vector current size. Prefer the other overload. m_Data
is deleted iff m_LetArrayManageMemory
is true m_Data == data
m_LetArrayManageMemory ==LetArrayManageMemory
Size()
is left unmodified. Referenced by itk::MetaArrayReader::GetOutput().
void itk::VariableLengthVector< TValue >::SetData | ( | TValue * | data, |
unsigned int | sz, | ||
bool | LetArrayManageMemory = false |
||
) |
Similar to the previous method. In the above method, the size must be separately 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 wherever 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.
m_Data
is deleted iff m_LetArrayManageMemory
is true m_Data == data
m_LetArrayManageMemory ==LetArrayManageMemory
m_NumElements == sz
|
inline |
Set one element
Definition at line 589 of file itkVariableLengthVector.h.
void itk::VariableLengthVector< TValue >::SetSize | ( | unsigned int | sz, |
TReallocatePolicy | reallocatePolicy, | ||
TKeepValuesPolicy | keepValues | ||
) |
Resizes the vector.
TReallocatePolicy | Policy that determines precisely the conditions under which the internal buffer shall be reallocated. It shall inherit from AllocateRootPolicy . |
TKeepValuesPolicy | Policy that determines whether old elements shall be kept. It shall inherit from KeepValuesRootPolicy . |
Referenced by itk::LinearInterpolateImageFunction< TInputImage, TCoordRep >::MakeZeroInitializer(), itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::MathEMAMAMAM(), itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::MathSMAMAMAM(), and itk::NumericTraits< VariableLengthVector< T > >::SetLength().
|
inline |
Set the size to that given.
If \c destroyExistingData is \c 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 \c 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 \c true.
Definition at line 639 of file itkVariableLengthVector.h.
|
inline |
Return the number of elements in the Array
Definition at line 574 of file itkVariableLengthVector.h.
Referenced by itk::Statistics::MeasurementVectorTraits::Assert(), itk::DefaultConvertPixelTraits< VariableLengthVector< VComponent > >::GetNumberOfComponents(), itk::NumericTraits< VariableLengthVector< T > >::max(), itk::NumericTraits< VariableLengthVector< T > >::min(), itk::NumericTraits< VariableLengthVector< T > >::NonpositiveMin(), itk::NumericTraits< VariableLengthVector< T > >::OneValue(), itk::VariableLengthVector< TValue >::operator=(), itk::MetaArrayWriter::SetInput(), itk::MeshIOBase::SetPixelType(), itk::VariableLengthVector< TValue >::VariableLengthVector(), and itk::NumericTraits< VariableLengthVector< T > >::ZeroValue().
|
inlinenoexcept |
Swaps two VariableLengthVector
's.
VariableLengthVector
to act as a proxy, or both, checked with an assertion. *this
and old
contents are swapped. [in,out] | v | other VariableLengthVector to be swapped with. |
None |
itk::swap()
Definition at line 431 of file itkVariableLengthVector.h.
References itk::swap().
|
related |
Multiplication between a VariableLengthVector
and a scalar. This operation is generic and takes one array and one number (on either side).
None | As no allocation will be performed. |
mpl::IsArray<>
to know the exact array types recognized as array by this traits Definition at line 1253 of file itkVariableLengthVector.h.
|
related |
Addition involving a VariableLengthVector
. This operation is generic and takes:
None | As no allocation will be performed. |
mpl::IsArray<>
to know the exact array types recognized as array by this traits Definition at line 1224 of file itkVariableLengthVector.h.
|
related |
Subtraction involving a VariableLengthVector
. This operation is generic and takes:
None | As no allocation will be performed. |
mpl::IsArray<>
to know the exact array types recognized as array by this traits Definition at line 1239 of file itkVariableLengthVector.h.
|
related |
Division of a VariableLengthVector
by a scalar. This operation is generic and takes one array and one number.
None | As no allocation will be performed. |
mpl::IsArray<>
to know the exact array types recognized as array by this traits Definition at line 1266 of file itkVariableLengthVector.h.
|
related |
Serialization of VariableLengthVector
Definition at line 1330 of file itkVariableLengthVector.h.
|
related |
swap()
overload for VariableLengthVector
None |
Definition at line 1372 of file itkVariableLengthVector.h.
|
private |
Definition at line 948 of file itkVariableLengthVector.h.
|
private |
Definition at line 946 of file itkVariableLengthVector.h.
|
private |
Definition at line 949 of file itkVariableLengthVector.h.