Safe arrays of data objects.Class DataArray provides safe arrays of Data Objects. For general C++ objects (in contrast to data objects) class Array is provided which manages memory in a C++ compliant way. More...
#include <dataarray.h>
Public Member Functions | |
T & | operator[] (int n) |
reference n 'th element. More... | |
const T & | operator[] (int n) const |
reference n 'th const element. More... | |
T & | last () |
reference last element. More... | |
const T & | last () const |
reference last const element. More... | |
T * | get_ptr () |
get a C pointer to the data. More... | |
const T * | get_const_ptr () const |
get a const C pointer to the data. More... | |
void | append (const T &t) |
append element t . More... | |
void | append (int n, const T &t) |
append n elements with value t . More... | |
void | append (int n, const T t[]) |
append n elements from t . More... | |
void | append (const DataArray< T > &t) |
append all elements from t . More... | |
void | insert (int i, int n) |
insert n uninitialized elements before i 'th element. More... | |
void | insert (int i, int n, const T &t) |
insert n elements with value t before i 'the element. More... | |
void | insert (int i, int n, const T t[]) |
insert n elements from t before i 'the element. More... | |
void | insert (int i, const DataArray< T > &t) |
insert all elements from t before i 'th element. More... | |
void | remove (int n=0, int m=1) |
remove m elements starting at n . More... | |
void | removeLast (int m=1) |
remove m last elements. More... | |
void | clear () |
remove all elements. More... | |
int | size () const |
return nr. of elements. More... | |
void | reSize (int newsize) |
reset size to newsize . More... | |
int | max () const |
return maximum number of elements. More... | |
void | reMax (int newMax=1, int newSize=-1) |
reset maximum number of elements. More... | |
DataArray & | operator= (const DataArray &rhs) |
assignment operator More... | |
bool | isConsistent () const |
consistency check More... | |
DataArray (const DataArray &old) | |
copy constructor More... | |
DataArray (int p_size=0, int p_max=0, Real p_fac=1.2) | |
default constructor. More... | |
~DataArray () | |
destructor More... | |
Protected Attributes | |
Real | memFactor |
memory extension factor. More... | |
Private Attributes | |
int | thesize |
number of used elements in array data More... | |
int | themax |
the length of array data and More... | |
T * | data |
the array of elements More... | |
Safe arrays of data objects.
Class DataArray provides safe arrays of Data Objects. For general C++ objects (in contrast to data objects) class Array is provided which manages memory in a C++ compliant way.
The elements of an instance of DataArray can be accessed just like ordinary C++ array elements by means of the index operator[](). Safety is provided by
-DNDEBUG
).Moreover, DataArrays may easily be extended by inserting or appending elements to the DataArray or shrunken by removing elements. Method reSize(int n) resets the DataArrays length to n
thereby possibly appending elements or truncating the DataArray to the required size.
A DataArray may be used as arguments for standard C functions requiring pointers through the use of get_ptr() and get_const_ptr().
Internally, a DataArray object allocates a block of memory that fits up to max() elements, only size() of them are used. This makes extension and shrinking methods perform better.
Definition at line 65 of file dataarray.h.
copy constructor
Definition at line 319 of file dataarray.h.
default constructor.
The constructor allocates an Array containing size
uninitialized elements. The internal array is allocated to have max
nonzeros, and the memory extension factor is set to fac
.
p_size | number of unitialised elements. |
p_max | maximum number of elements the array can hold. |
p_fac | value for memFactor. |
Definition at line 344 of file dataarray.h.
~DataArray | ( | ) |
destructor
Definition at line 361 of file dataarray.h.
void append | ( | const T & | t | ) |
append element t
.
Definition at line 125 of file dataarray.h.
void append | ( | int | n, |
const T & | t | ||
) |
append n
elements with value t
.
Definition at line 130 of file dataarray.h.
void append | ( | int | n, |
const T | t[] | ||
) |
append n
elements from t
.
Definition at line 135 of file dataarray.h.
void append | ( | const DataArray< T > & | t | ) |
append all elements from t
.
Definition at line 140 of file dataarray.h.
void clear | ( | ) |
remove all elements.
Definition at line 212 of file dataarray.h.
Referenced by LPColSetBase< Rational >::clear(), and LPRowSetBase< R >::clear().
const T* get_const_ptr | ( | ) | const |
get a const C pointer to the data.
Definition at line 119 of file dataarray.h.
Referenced by SPxBasisBase< R >::Desc::colStatus(), SPxBasisBase< R >::Desc::coStatus(), SPxBasisBase< R >::Desc::rowStatus(), and SPxBasisBase< R >::Desc::status().
T* get_ptr | ( | ) |
get a C pointer to the data.
Definition at line 114 of file dataarray.h.
Referenced by SPxLPBase< R >::added2Set(), ClassSet< soplex::SVSetBase::DLPSV >::remove(), DataSet< int >::remove(), LPColSetBase< Rational >::remove(), LPRowSetBase< R >::remove(), SVSetBase< Rational >::remove(), SPxLPBase< R >::removeColRange(), SPxLPBase< R >::removeCols(), SPxLPBase< R >::removeRowRange(), and SPxLPBase< R >::removeRows().
void insert | ( | int | i, |
int | n | ||
) |
insert n
uninitialized elements before i
'th element.
move n
elements in memory from insert position i
to the back
Definition at line 146 of file dataarray.h.
Referenced by DataArray< const soplex::SVectorBase< R > * >::append(), and DataArray< const soplex::SVectorBase< R > * >::insert().
void insert | ( | int | i, |
int | n, | ||
const T & | t | ||
) |
insert n
elements with value t
before i
'the element.
Definition at line 161 of file dataarray.h.
void insert | ( | int | i, |
int | n, | ||
const T | t[] | ||
) |
insert n
elements from t
before i
'the element.
Definition at line 173 of file dataarray.h.
void insert | ( | int | i, |
const DataArray< T > & | t | ||
) |
insert all elements from t
before i
'th element.
Definition at line 183 of file dataarray.h.
bool isConsistent | ( | ) | const |
consistency check
Definition at line 302 of file dataarray.h.
Referenced by DataArray< const soplex::SVectorBase< R > * >::DataArray(), and DataArray< const soplex::SVectorBase< R > * >::operator=().
T& last | ( | ) |
reference last element.
Definition at line 101 of file dataarray.h.
const T& last | ( | ) | const |
reference last const element.
Definition at line 107 of file dataarray.h.
int max | ( | ) | const |
return maximum number of elements.
Even though the DataArray currently holds no more than size() elements, up to max() elements could be added without need to reallocated free store.
Definition at line 247 of file dataarray.h.
Referenced by DataArray< const soplex::SVectorBase< R > * >::DataArray().
assignment operator
Definition at line 288 of file dataarray.h.
T& operator[] | ( | int | n | ) |
reference n
'th element.
Definition at line 86 of file dataarray.h.
const T& operator[] | ( | int | n | ) | const |
reference n
'th const element.
Definition at line 93 of file dataarray.h.
void reMax | ( | int | newMax = 1 , |
int | newSize = -1 |
||
) |
reset maximum number of elements.
The value of max() is reset to newMax
thereby setting size() to newSize
. However, if newSize
has a value <
0
(as the default argument does) size() remains unchanged and max() is set to MIN(size(), newMax). Hence, calling reMax() without the default arguments, will reduce the memory consumption to a minimum. In no instance max() will be set to a value less than 1 (even if specified).
Definition at line 262 of file dataarray.h.
Referenced by DataArray< const soplex::SVectorBase< R > * >::reSize().
void remove | ( | int | n = 0 , |
int | m = 1 |
||
) |
remove m
elements starting at n
.
Definition at line 193 of file dataarray.h.
void removeLast | ( | int | m = 1 | ) |
remove m
last elements.
Definition at line 206 of file dataarray.h.
void reSize | ( | int | newsize | ) |
reset size to newsize
.
Resizing a DataArray to less than the previous size, involves discarding its last elements. Resizing to a larger value involves adding uninitialized elements (similar to append()). If neccessary, also memory will be reallocated.
newsize | the new number of elements the array can hold. |
Definition at line 230 of file dataarray.h.
Referenced by LPColSetBase< Rational >::add(), LPRowSetBase< R >::add(), LPColSetBase< Rational >::create(), LPRowSetBase< R >::create(), SPxLPBase< R >::doAddCols(), SPxLPBase< R >::doAddRows(), DataArray< const soplex::SVectorBase< R > * >::insert(), DataArray< const soplex::SVectorBase< R > * >::operator=(), LPColSetBase< Rational >::reMax(), LPRowSetBase< R >::reMax(), LPColSetBase< Rational >::remove(), and LPRowSetBase< R >::remove().
int size | ( | ) | const |
return nr. of elements.
Definition at line 218 of file dataarray.h.
Referenced by SPxBasisBase< R >::Desc::coDim(), SPxBasisBase< R >::Desc::dim(), Presol< R >::getBasis(), SPxMainSM< R >::getBasis(), DataArray< const soplex::SVectorBase< R > * >::insert(), SPxBasisBase< R >::Desc::nCols(), SPxBasisBase< R >::Desc::nRows(), DataArray< const soplex::SVectorBase< R > * >::operator=(), DataArray< const soplex::SVectorBase< R > * >::remove(), and DataArray< const soplex::SVectorBase< R > * >::removeLast().
|
private |
the array of elements
Definition at line 72 of file dataarray.h.
Referenced by DataArray< const soplex::SVectorBase< R > * >::DataArray(), DataArray< const soplex::SVectorBase< R > * >::get_const_ptr(), DataArray< const soplex::SVectorBase< R > * >::get_ptr(), DataArray< const soplex::SVectorBase< R > * >::insert(), and DataArray< const soplex::SVectorBase< R > * >::operator=().
|
protected |
memory extension factor.
When a DataArray is reSize()d to more than max() elements, the new value for max() is not just set to the new size but rather to memFactor
* size
. This makes reSizeing perform better in codes where a DataArray is extended often by a small number of elements only.
Definition at line 81 of file dataarray.h.
|
private |
the length of array data and
Definition at line 71 of file dataarray.h.
Referenced by DataArray< const soplex::SVectorBase< R > * >::max().
|
private |
number of used elements in array data
Definition at line 68 of file dataarray.h.
Referenced by DataArray< const soplex::SVectorBase< R > * >::insert(), and DataArray< const soplex::SVectorBase< R > * >::size().