FOX/ObjCryst++
1.10.X (development)
|
Vector library (Blitz++ mimic) for ObjCryst++. More...
Public Member Functions | |
CrystVector (const long nbElements) | |
CrystVector (const CrystVector &old) | |
void | operator= (const CrystVector &old) |
template<class U > | |
void | operator= (const CrystVector< U > &old) |
template<class U > | |
operator CrystVector< U > () const | |
void | reference (CrystVector &old, const long imin=0, const long imax=0) |
Define this vector as a reference to another vector, or part of another vector. More... | |
long | numElements () const |
long | size () const |
T | sum () const |
T | min () const |
T | max () const |
unsigned long | imin (const unsigned long start=0, const unsigned long finish=0) const |
Find index of minimum, between start and end (if start==end, use full vector) | |
unsigned long | imax (const unsigned long start=0, const unsigned long finish=0) const |
Find index of maximum, between start and end (if start==end, use full vector) | |
T * | data () |
const T * | data () const |
void | resize (const long newNbElements) |
void | resizeAndPreserve (const long newNbElements) |
void | operator*= (const T num) |
void | operator*= (const CrystVector &vect) |
void | operator/= (const T num) |
void | operator/= (const CrystVector &vect) |
void | operator+= (const T num) |
void | operator+= (const CrystVector &vect) |
void | operator-= (const CrystVector &vect) |
void | operator= (const T num) |
T | operator() (const long i) const |
T & | operator() (const long i) |
Private Attributes | |
T * | mpData |
long | mNumElements |
bool | mIsAreference |
Vector library (Blitz++ mimic) for ObjCryst++.
The CrystVector library is not a new array computation library, despite the appearances. ObjCryst++ should used the Blitz++ array library , which yields excellent performance and simple array expressions. Unfortunately, the memory required to compile the library using gcc is far too high to be reasonable when using complex expressions and optimizing code. So until this has changed, The CrystVector and CrystMatrix library have been created, and these emulate (supposedly exactly) the Blitz++ interface (but not the smart handling of mathematical expressions, so pointers must be used). For documentation about these two libraries you should read the Blitz++ documentation. CrystVector and CrystMatrix use the same kind of storage in memory.
You can use CrystVector_REAL, CrystVector_long,etc... to declare 1D vectors. Macros ensure (well, should) ensure compatibility with Blitz++. (as of april 2001 support of blitz++ is broken).
Definition at line 122 of file CrystVector.h.
void CrystVector< T >::reference | ( | CrystVector< T > & | old, |
const long | imin = 0 , |
||
const long | imax = 0 |
||
) |
Define this vector as a reference to another vector, or part of another vector.
old | the vector this one should point to |
imin,imax | imax>imin, this vector will point to a part of the other vector, from old(i) to old(imax-1) |
Definition at line 84 of file CrystVector.cpp.