81 assert(n >= 0 && n < num);
87 assert(n >= 0 && n < num);
130 assert(newdata != 0);
133 for( k = 0; k < i; ++k )
135 new (&(newdata[k])) T();
136 newdata[k] = data[k];
141 for( ; k < i+n; ++k )
142 new (&(newdata[k])) T();
145 for( k = i; k <
num; ++k )
147 new (&(newdata[n + k])) T();
148 newdata[n + k] = data[k];
160 void insert(
int i,
int n,
const T* p_array)
163 for (n--; n >= 0; --n)
164 data[n + i] = p_array[n];
170 int n = p_array.
size();
172 for (n--; n >= 0; --n)
173 data[n + i] = p_array.
data[n];
181 void remove(
int n = 0,
int m = 1)
183 assert(n >= 0 && m >= 0);
184 if (m > 0 && n < num)
189 assert(num ==
size());
190 m -= (n + m <=
num) ? 0 : n + m - num;
195 assert(newdata != 0);
198 for( k = num - 1; k >= n + m; --k )
200 new (&(newdata[k - m])) T();
201 newdata[k - m] = data[k];
212 new (&(newdata[k])) T();
213 newdata[k] = data[k];
223 for( k = m - 1; k >= 0; --k )
232 assert((data == 0) == (num == 0));
260 remove(newsize, num - newsize);
261 else if (newsize > num)
279 for (
int i = 0; i <
num; ++i)
280 data[i] = rhs.
data[i];
302 for( k = 0; k <
num; ++k )
303 new (&(data[k])) T();
320 for( k = 0; k <
num; ++k )
322 new (&(data[k])) T();
323 data[k] = old.
data[k];
346 #ifdef ENABLE_CONSISTENCY_CHECKS 347 if (num < 0 || (num > 0 && data == 0))
Memory allocation routines.
int size() const
return the number of elements.
bool isConsistent() const
consistency check
const T & operator[](int n) const
reference n 'th element.
Safe arrays of arbitrary types.Class Array provides safe arrays of arbitrary type. Array elements are accessed just like ordinary C++ array elements by means of the index operator[](). Safety is provided by.
void insert(int i, int n, const T *p_array)
insert n elements from p_array before i 'th element.
T * data
the array of elements
void clear()
remove all elements.
void append(const Array< T > &p_array)
append all elements from p_array.
void spx_alloc(T &p, int n=1)
Allocate memory.
Array< T > & operator=(const Array< T > &rhs)
assignment operator.
void insert(int i, const Array< T > &p_array)
insert all elements from p_array before i 'th element.
T & operator[](int n)
reference n 'th element.
Everything should be within this namespace.
void reSize(int newsize)
reset the number of elements.
void append(int n, const T *p_array)
append n elements from p_array.
Array(const Array< T > &old)
copy constructor
Array(int n=0)
default constructor.
void append(int n)
append n uninitialized elements.
#define MSGinconsistent(name)
void insert(int i, int n)
int num
the length of array data
void spx_free(T &p)
Release memory.