Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

vnl_vector< T > Class Template Reference

#include <vnl_vector.h>

Inheritance diagram for vnl_vector< T >:

vnl_file_vector< T > vnl_vector_ref< T > List of all members.

Detailed Description

template<class T>
class vnl_vector< T >

Mathematical vector class, templated by type of element.

The vnl_vector<T> class implements one-dimensional arithmetic vectors to be used with the vnl_matrix<T> class. vnl_vector<T> has size fixed by constructor time or changed by assignment operator. For faster, non-mallocing vectors with size known at compile time, use vnl_vector_fixed* or vnl_T_n (e.g. vnl_double_3).

NOTE: Vectors are indexed from zero! Thus valid elements are [0,size()-1].

Definition at line 73 of file vnl_vector.h.

Public Types

typedef T element_type
 Type defs for iterators.
typedef T * iterator
 Type defs for iterators.
typedef T const * const_iterator
 Const iterator type.
typedef vnl_c_vector< T
>::abs_t 
abs_t

Public Member Functions

 vnl_vector ()
 Creates an empty vector. O(1).
 vnl_vector (unsigned len)
 Creates vector containing n elements.
 vnl_vector (unsigned len, T const &v0)
 Creates vector of len elements, all set to v0.
 vnl_vector (unsigned len, int n, T const values[])
 Creates a vector of specified length and initialize first n elements with values. O(n).
 vnl_vector (T const *data_block, unsigned int n)
 Create n element vector and copy data from data_block.
 vnl_vector (vnl_vector< T > const &)
 Copy constructor.
 vnl_vector (vnl_vector< T > const &, vnl_vector< T > const &, vnl_tag_add)
 vnl_vector (vnl_vector< T > const &, vnl_vector< T > const &, vnl_tag_sub)
 vnl_vector (vnl_vector< T > const &, T, vnl_tag_mul)
 vnl_vector (vnl_vector< T > const &, T, vnl_tag_div)
 vnl_vector (vnl_vector< T > const &, T, vnl_tag_add)
 vnl_vector (vnl_vector< T > const &, T, vnl_tag_sub)
 vnl_vector (vnl_matrix< T > const &, vnl_vector< T > const &, vnl_tag_mul)
 vnl_vector (vnl_vector< T > const &, vnl_matrix< T > const &, vnl_tag_mul)
 vnl_vector (vnl_vector< T > &that, vnl_tag_grab)
 ~vnl_vector ()
 Destructor.
unsigned size () const
 Return the length, number of elements, dimension of this vector.
void put (unsigned int i, T const &)
 Put value at given position in vector.
get (unsigned int i) const
 Get value at element i.
void fill (T const &v)
 Set all values to v.
void copy_in (T const *ptr)
 Sets elements to ptr[i].
void copy_out (T *) const
 Copy elements to ptr[i].
void set (T const *ptr)
 Sets elements to ptr[i].
T & operator() (unsigned int i)
 Return reference to the element at specified index.
T const & operator() (unsigned int i) const
 Return reference to the element at specified index. No range checking.
T & operator[] (unsigned int i)
 Return reference to the element at specified index. No range checking.
T const & operator[] (unsigned int i) const
 Return reference to the element at specified index. No range checking.
vnl_vector< T > & operator= (T const &v)
 Set all elements to value v.
vnl_vector< T > & operator= (vnl_vector< T > const &rhs)
 Copy operator.
vnl_vector< T > & operator+= (T)
 Add scalar value to all elements.
vnl_vector< T > & operator-= (T value)
 Subtract scalar value from all elements.
vnl_vector< T > & operator *= (T)
 Multiply all elements by scalar.
vnl_vector< T > & operator/= (T)
 Divide all elements by scalar.
vnl_vector< T > & operator+= (vnl_vector< T > const &rhs)
 Add rhs to this and return *this.
vnl_vector< T > & operator-= (vnl_vector< T > const &rhs)
 Subtract rhs from this and return *this.
vnl_vector< T > & pre_multiply (vnl_matrix< T > const &M)
 *this = M*(*this) where M is a suitable matrix.
vnl_vector< T > & post_multiply (vnl_matrix< T > const &M)
 *this = (*this)*M where M is a suitable matrix.
vnl_vector< T > & operator *= (vnl_matrix< T > const &m)
 *this = (*this)*M where M is a suitable matrix.
vnl_vector< T > operator+ () const
 Unary plus operator.
vnl_vector< T > operator- () const
 Unary minus operator.
vnl_vector< T > operator+ (T v) const
vnl_vector< T > operator- (T v) const
vnl_vector< T > operator * (T v) const
vnl_vector< T > operator/ (T v) const
vnl_vector< T > operator+ (vnl_vector< T > const &v) const
vnl_vector< T > operator- (vnl_vector< T > const &v) const
vnl_vector< T > operator * (vnl_matrix< T > const &M) const
T const * data_block () const
 Access the contiguous block storing the elements in the vector. O(1).
T * data_block ()
 Access the contiguous block storing the elements in the vector. O(1).
iterator begin ()
 Iterator pointing to start of data.
iterator end ()
 Iterator pointing to element beyond end of data.
const_iterator begin () const
 Iterator pointing to start of data.
const_iterator end () const
 Iterator pointing to element beyond end of data.
vnl_vector< T > const & as_ref () const
 Return a reference to this.
vnl_vector< T > & as_ref ()
 Return a reference to this.
vnl_vector< T > apply (T(*f)(T)) const
 Applies function to elements.
vnl_vector< T > apply (T(*f)(T const &)) const
 Applies function to elements.
vnl_vector< T > extract (unsigned int len, unsigned int start=0) const
 Returns a subvector specified by the start index and length. O(n).
vnl_vector< T > & update (vnl_vector< T > const &, unsigned int start=0)
 Replaces elements with index beginning at start, by values of v. O(n).
abs_t squared_magnitude () const
 Return sum of squares of elements.
abs_t magnitude () const
 Return magnitude (length) of vector.
abs_t one_norm () const
 Return sum of absolute values of the elements.
abs_t two_norm () const
 Return sqrt of sum of squares of values of elements.
abs_t inf_norm () const
 Return largest absolute element value.
vnl_vector< T > & normalize ()
 Normalise by dividing through by the magnitude.
abs_t rms () const
 Root Mean Squares of values.
min_value () const
 Smallest value.
max_value () const
 Largest value.
mean () const
 Mean of values in vector.
sum () const
 Sum of values in a vector.
void flip ()
 Reverse the order of the elements.
void swap (vnl_vector< T > &that)
 Set this to that and that to this.
void assert_size (unsigned sz) const
 Check that size()==sz if not, abort();.
void assert_finite () const
 Check that this is finite if not, abort();.
bool is_finite () const
 Return true if its finite.
bool is_zero () const
 Return true iff all the entries are zero.
bool empty () const
 Return true iff the size is zero.
bool operator_eq (vnl_vector< T > const &v) const
 Return true if *this == v.
bool operator== (vnl_vector< T > const &that) const
 Equality test.
bool operator!= (vnl_vector< T > const &that) const
 Inequality test.
bool set_size (unsigned n)
 Resize to n elements.
void clear ()
 Make the vector as if it had been default-constructed.
bool read_ascii (vcl_istream &s)
 Read from text stream.

Static Public Member Functions

static vnl_vector< T > read (vcl_istream &s)
 Read from text stream.

Protected Member Functions

void assert_size_internal (unsigned sz) const
void assert_finite_internal () const
void destroy ()
 Frees up the array inside vector. O(1).

Static Protected Member Functions

static void inline_function_tickler ()

Protected Attributes

unsigned num_elmts
T * data

Friends

class vnl_matrix< T >

Related Functions

(Note that these are not member functions.)

vnl_vector< vcl_complex< T > > vnl_complexify (vnl_vector< T > const &R)
 Return complexified version of real vector R.
vnl_vector< vcl_complex< T > > vnl_complexify (vnl_vector< T > const &R, vnl_vector< T > const &I)
 Return complex vector R+j*I from two real vectors R and I.
void vnl_copy (S const *src, T *dst, unsigned n)
 Easy conversion between vectors and matrices templated over different types.
void vnl_copy (S const &, T &)
 Easy conversion between vectors and matrices templated over different types.
vnl_cross_2d (const vnl_vector< T > &v1, const vnl_vector< T > &v2)
 Compute the 2-D cross product.
vnl_vector< T > vnl_cross_3d (const vnl_vector< T > &v1, const vnl_vector< T > &v2)
 Compute the 3-D cross product.
vnl_vector< T > operator * (vnl_diag_matrix< T > const &D, vnl_vector< T > const &A)
 Multiply a vnl_diag_matrix by a vnl_vector. n flops.
vnl_vector< T > operator * (vnl_vector< T > const &A, vnl_diag_matrix< T > const &D)
 Multiply a vnl_vector by a vnl_diag_matrix. n flops.
vnl_vector< T > vnl_imag (vnl_vector< vcl_complex< T > > const &C)
 Vector of imaginary parts of vnl_vector<vcl_complex<T> >.
bool operator< (vnl_vector< T > const &lhs, vnl_vector< T > const &rhs)
 Define a complete ordering on vnl_vector.
vnl_vector< T > vnl_real (vnl_vector< vcl_complex< T > > const &C)
 Vector of real parts of vnl_vector<vcl_complex<T> >.
vnl_vector< T > operator+ (T s, vnl_vector< T > const &v)
 add scalar and vector. O(n).
vnl_vector< T > operator- (T s, vnl_vector< T > const &v)
 subtract vector from scalar. O(n).
vnl_vector< T > operator * (T s, vnl_vector< T > const &v)
 multiply scalar and vector. O(n).
void swap (vnl_vector< T > &a, vnl_vector< T > &b)
 Interchange the two vectors.
vnl_vector_ssd (vnl_vector< T > const &v1, vnl_vector< T > const &v2)
 Euclidean Distance between two vectors.
export vcl_ostream & operator<< (vcl_ostream &, vnl_vector< T > const &)
 Write vector to a vcl_ostream.
export vcl_istream & operator>> (vcl_istream &, vnl_vector< T > &)
 Read vector from a vcl_istream.


Member Typedef Documentation

template<class T>
typedef vnl_c_vector<T>::abs_t vnl_vector< T >::abs_t
 

Definition at line 288 of file vnl_vector.h.

template<class T>
typedef T const* vnl_vector< T >::const_iterator
 

Const iterator type.

Definition at line 261 of file vnl_vector.h.

template<class T>
typedef T vnl_vector< T >::element_type
 

Type defs for iterators.

Definition at line 251 of file vnl_vector.h.

template<class T>
typedef T* vnl_vector< T >::iterator
 

Type defs for iterators.

Definition at line 253 of file vnl_vector.h.


Constructor & Destructor Documentation

template<class T>
vnl_vector< T >::vnl_vector  )  [inline]
 

Creates an empty vector. O(1).

Definition at line 79 of file vnl_vector.h.

template<class T>
vnl_vector< T >::vnl_vector unsigned  len  )  [explicit]
 

Creates vector containing n elements.

Elements are not initialized.

Definition at line 80 of file vnl_vector.txx.

template<class T>
vnl_vector< T >::vnl_vector unsigned  len,
T const &  v0
 

Creates vector of len elements, all set to v0.

Definition at line 90 of file vnl_vector.txx.

template<class T>
vnl_vector< T >::vnl_vector unsigned  len,
int  n,
T const   values[]
 

Creates a vector of specified length and initialize first n elements with values. O(n).

Definition at line 101 of file vnl_vector.txx.

template<class T>
vnl_vector< T >::vnl_vector T const *  data_block,
unsigned int  n
 

Create n element vector and copy data from data_block.

template<class T>
vnl_vector< T >::vnl_vector vnl_vector< T > const &   ) 
 

Copy constructor.

Definition at line 153 of file vnl_vector.txx.

template<class T>
vnl_vector< T >::vnl_vector vnl_vector< T > const &  ,
vnl_vector< T > const &  ,
vnl_tag_add 
 

Definition at line 176 of file vnl_vector.txx.

template<class T>
vnl_vector< T >::vnl_vector vnl_vector< T > const &  ,
vnl_vector< T > const &  ,
vnl_tag_sub 
 

Definition at line 189 of file vnl_vector.txx.

template<class T>
vnl_vector< T >::vnl_vector vnl_vector< T > const &  ,
,
vnl_tag_mul 
 

Definition at line 202 of file vnl_vector.txx.

template<class T>
vnl_vector< T >::vnl_vector vnl_vector< T > const &  ,
,
vnl_tag_div 
 

Definition at line 211 of file vnl_vector.txx.

template<class T>
vnl_vector< T >::vnl_vector vnl_vector< T > const &  ,
,
vnl_tag_add 
 

Definition at line 220 of file vnl_vector.txx.

template<class T>
vnl_vector< T >::vnl_vector vnl_vector< T > const &  ,
,
vnl_tag_sub 
 

Definition at line 229 of file vnl_vector.txx.

template<class T>
vnl_vector< T >::vnl_vector vnl_matrix< T > const &  ,
vnl_vector< T > const &  ,
vnl_tag_mul 
 

Definition at line 238 of file vnl_vector.txx.

template<class T>
vnl_vector< T >::vnl_vector vnl_vector< T > const &  ,
vnl_matrix< T > const &  ,
vnl_tag_mul 
 

Definition at line 251 of file vnl_vector.txx.

template<class T>
vnl_vector< T >::vnl_vector vnl_vector< T > &  that,
vnl_tag_grab 
[inline]
 

Definition at line 129 of file vnl_vector.h.

template<class T>
vnl_vector< T >::~vnl_vector  ) 
 

Destructor.

Definition at line 263 of file vnl_vector.txx.


Member Function Documentation

template<class T>
vnl_vector< T > vnl_vector< T >::apply T(*)(T const &)  f  )  const
 

Applies function to elements.

Definition at line 632 of file vnl_vector.txx.

template<class T>
vnl_vector< T > vnl_vector< T >::apply T(*)(T)  f  )  const
 

Applies function to elements.

Definition at line 641 of file vnl_vector.txx.

template<class T>
vnl_vector<T>& vnl_vector< T >::as_ref  )  [inline]
 

Return a reference to this.

Definition at line 274 of file vnl_vector.h.

template<class T>
vnl_vector<T> const& vnl_vector< T >::as_ref  )  const [inline]
 

Return a reference to this.

Useful in code which would prefer not to know if its argument is a vector, vector_ref or a vector_fixed. Note that it doesn't return a vector_ref, so it's only useful in templates or macros.

Definition at line 271 of file vnl_vector.h.

template<class T>
void vnl_vector< T >::assert_finite  )  const [inline]
 

Check that this is finite if not, abort();.

This function does or tests nothing if NDEBUG is defined

Definition at line 370 of file vnl_vector.h.

template<class T>
void vnl_vector< T >::assert_finite_internal  )  const [protected]
 

Definition at line 790 of file vnl_vector.txx.

template<class T>
void vnl_vector< T >::assert_size unsigned  sz  )  const [inline]
 

Check that size()==sz if not, abort();.

This function does or tests nothing if NDEBUG is defined

Definition at line 362 of file vnl_vector.h.

template<class T>
void vnl_vector< T >::assert_size_internal unsigned  sz  )  const [protected]
 

Definition at line 800 of file vnl_vector.txx.

template<class T>
const_iterator vnl_vector< T >::begin  )  const [inline]
 

Iterator pointing to start of data.

Definition at line 263 of file vnl_vector.h.

template<class T>
iterator vnl_vector< T >::begin  )  [inline]
 

Iterator pointing to start of data.

Definition at line 255 of file vnl_vector.h.

template<class T>
void vnl_vector< T >::clear  ) 
 

Make the vector as if it had been default-constructed.

Definition at line 281 of file vnl_vector.txx.

template<class T>
void vnl_vector< T >::copy_in T const *  ptr  ) 
 

Sets elements to ptr[i].

Note: ptr[i] must be valid for i=0..size()-1

Definition at line 363 of file vnl_vector.txx.

template<class T>
void vnl_vector< T >::copy_out T *   )  const
 

Copy elements to ptr[i].

Note: ptr[i] must be valid for i=0..size()-1

Definition at line 372 of file vnl_vector.txx.

template<class T>
T* vnl_vector< T >::data_block  )  [inline]
 

Access the contiguous block storing the elements in the vector. O(1).

data_block()[0] is the first element of the vector

Definition at line 248 of file vnl_vector.h.

template<class T>
T const* vnl_vector< T >::data_block  )  const [inline]
 

Access the contiguous block storing the elements in the vector. O(1).

data_block()[0] is the first element of the vector

Definition at line 244 of file vnl_vector.h.

template<class T>
void vnl_vector< T >::destroy  )  [protected]
 

Frees up the array inside vector. O(1).

Definition at line 275 of file vnl_vector.txx.

template<class T>
bool vnl_vector< T >::empty  )  const [inline]
 

Return true iff the size is zero.

Definition at line 383 of file vnl_vector.h.

template<class T>
const_iterator vnl_vector< T >::end  )  const [inline]
 

Iterator pointing to element beyond end of data.

Definition at line 265 of file vnl_vector.h.

template<class T>
iterator vnl_vector< T >::end  )  [inline]
 

Iterator pointing to element beyond end of data.

Definition at line 258 of file vnl_vector.h.

template<class T>
vnl_vector<T> vnl_vector< T >::extract unsigned int  len,
unsigned int  start = 0
const
 

Returns a subvector specified by the start index and length. O(n).

template<class T>
void vnl_vector< T >::fill T const &  v  ) 
 

Set all values to v.

Definition at line 354 of file vnl_vector.txx.

template<class T>
void vnl_vector< T >::flip  ) 
 

Reverse the order of the elements.

Element i swaps with element size()-1-i

Definition at line 710 of file vnl_vector.txx.

template<class T>
T vnl_vector< T >::get unsigned int  index  )  const [inline]
 

Get value at element i.

Range check is performed.

Definition at line 457 of file vnl_vector.h.

template<class T>
abs_t vnl_vector< T >::inf_norm  )  const [inline]
 

Return largest absolute element value.

Definition at line 303 of file vnl_vector.h.

template<class T>
void vnl_vector< T >::inline_function_tickler  )  [static, protected]
 

Definition at line 846 of file vnl_vector.txx.

template<class T>
bool vnl_vector< T >::is_finite  )  const
 

Return true if its finite.

Definition at line 769 of file vnl_vector.txx.

template<class T>
bool vnl_vector< T >::is_zero  )  const
 

Return true iff all the entries are zero.

Definition at line 779 of file vnl_vector.txx.

template<class T>
abs_t vnl_vector< T >::magnitude  )  const [inline]
 

Return magnitude (length) of vector.

Definition at line 294 of file vnl_vector.h.

template<class T>
T vnl_vector< T >::max_value  )  const [inline]
 

Largest value.

Definition at line 318 of file vnl_vector.h.

template<class T>
T vnl_vector< T >::mean  )  const [inline]
 

Mean of values in vector.

Definition at line 321 of file vnl_vector.h.

template<class T>
T vnl_vector< T >::min_value  )  const [inline]
 

Smallest value.

Definition at line 315 of file vnl_vector.h.

template<class T>
vnl_vector<T>& vnl_vector< T >::normalize  )  [inline]
 

Normalise by dividing through by the magnitude.

Definition at line 306 of file vnl_vector.h.

template<class T>
abs_t vnl_vector< T >::one_norm  )  const [inline]
 

Return sum of absolute values of the elements.

Definition at line 297 of file vnl_vector.h.

template<class T>
vnl_vector<T> vnl_vector< T >::operator * vnl_matrix< T > const &  M  )  const [inline]
 

Definition at line 238 of file vnl_vector.h.

template<class T>
vnl_vector<T> vnl_vector< T >::operator * v  )  const [inline]
 

Definition at line 233 of file vnl_vector.h.

template<class T>
vnl_vector<T>& vnl_vector< T >::operator *= vnl_matrix< T > const &  m  )  [inline]
 

*this = (*this)*M where M is a suitable matrix.

this is treated as a row vector

Definition at line 221 of file vnl_vector.h.

template<class T>
vnl_vector< T > & vnl_vector< T >::operator *=  ) 
 

Multiply all elements by scalar.

Definition at line 412 of file vnl_vector.txx.

template<class T>
bool vnl_vector< T >::operator!= vnl_vector< T > const &  that  )  const [inline]
 

Inequality test.

Definition at line 392 of file vnl_vector.h.

template<class T>
T const& vnl_vector< T >::operator() unsigned int  i  )  const [inline]
 

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

There are assert style boundary checks - define NDEBUG to turn them off.

Definition at line 174 of file vnl_vector.h.

template<class T>
T& vnl_vector< T >::operator() unsigned int  i  )  [inline]
 

Return reference to the element at specified index.

There are assert style boundary checks - define NDEBUG to turn them off.

Definition at line 165 of file vnl_vector.h.

<
template<class T>
vnl_vector<T> vnl_vector< T >::operator+