11 #ifndef _DYNAMIC_ARRAY_H_
12 #define _DYNAMIC_ARRAY_H_
30 template <
class T>
class CDynamicArray :
public CSGObject
50 CDynamicArray(int32_t p_dim1_size, int32_t p_dim2_size=1, int32_t p_dim3_size=1)
67 CDynamicArray(T* p_array, int32_t p_dim1_size,
bool p_free_array,
bool p_copy_array)
86 bool p_free_array,
bool p_copy_array)
87 :
CSGObject(),
m_array(p_array, p_dim1_size*p_dim2_size, p_free_array, p_copy_array),
name(
"Array")
106 int32_t p_dim3_size,
bool p_free_array,
bool p_copy_array)
107 :
CSGObject(),
m_array(p_array, p_dim1_size*p_dim2_size*p_dim3_size, p_free_array, p_copy_array),
name(
"Array")
123 CDynamicArray(
const T* p_array, int32_t p_dim1_size=1, int32_t p_dim2_size=1, int32_t p_dim3_size=1)
142 return m_array.set_granularity(g);
151 return m_array.get_array_size();
202 return m_array.get_num_elements();
212 inline const T&
get_element(int32_t idx1, int32_t idx2=0, int32_t idx3=0)
const
224 inline const T&
element(int32_t idx1, int32_t idx2=0, int32_t idx3=0)
const
236 inline T&
element(int32_t idx1, int32_t idx2=0, int32_t idx3=0)
249 inline T&
element(T* p_array, int32_t idx1, int32_t idx2=0, int32_t idx3=0)
267 inline T&
element(T* p_array, int32_t idx1, int32_t idx2, int32_t idx3, int32_t p_dim1_size, int32_t p_dim2_size)
271 ASSERT(idx1>=0 && idx1<p_dim1_size)
272 ASSERT(idx2>=0 && idx2<p_dim2_size)
274 return p_array[idx1+p_dim1_size*(idx2+p_dim2_size*idx3)];
283 return m_array.get_last_element();
295 return m_array.get_element_safe(index);
306 inline bool set_element(T e, int32_t idx1, int32_t idx2=0, int32_t idx3=0)
319 return m_array.insert_element(e, index);
329 return m_array.append_element(e);
366 return m_array.find_element(e);
377 return m_array.delete_element(idx);
387 inline bool resize_array(int32_t ndim1, int32_t ndim2=1, int32_t ndim3=1)
392 return m_array.resize_array(ndim1*ndim2*ndim3);
398 m_array.set_const(const_element);
419 inline void set_array(T* p_array, int32_t p_num_elements,
422 m_array.set_array(p_array, p_num_elements, array_size);
433 bool p_free_array,
bool copy_array)
438 m_array.set_array(p_array, dim1, dim1, p_free_array, copy_array);
450 int32_t dim2,
bool p_free_array,
bool copy_array)
456 m_array.set_array(p_array, dim1*dim2, dim1*dim2, p_free_array, copy_array);
469 int32_t dim2, int32_t dim3,
bool p_free_array,
bool copy_array)
474 m_array.set_array(p_array, dim1*dim2*dim3, dim1*dim2*dim3, p_free_array, copy_array);
484 m_array.set_array(p_array, p_size, p_size);
574 SG_PRINT(
"element(%d,:,%d) = [ ",i, k)
590 return "DynamicArray";
631 &
m_array.current_num_elements,
"array",
632 "Memory for dynamic array.");
637 "resize_granularity",
641 "whether SG_MALLOC or malloc should be used",
645 "whether array must be freed",
CDynamicArray(T *p_array, int32_t p_dim1_size, int32_t p_dim2_size, int32_t p_dim3_size, bool p_free_array, bool p_copy_array)
void set_array(const T *p_array, int32_t p_size)
CDynamicArray(const T *p_array, int32_t p_dim1_size=1, int32_t p_dim2_size=1, int32_t p_dim3_size=1)
void set_array(T *p_array, int32_t dim1, int32_t dim2, int32_t dim3, bool p_free_array, bool copy_array)
const T & operator[](int32_t index) const
int32_t set_granularity(int32_t g)
void set_const(const T &const_element)
Class ShogunException defines an exception which is thrown whenever an error inside of shogun occurs...
void shuffle(CRandom *rand)
void get_array_size(int32_t &dim1, int32_t &dim2, int32_t &dim3)
virtual void save_serializable_pre()
Template Dynamic array class that creates an array that can be used like a list or an array...
CDynamicArray(T *p_array, int32_t p_dim1_size, int32_t p_dim2_size, bool p_free_array, bool p_copy_array)
void set_array(T *p_array, int32_t dim1, int32_t dim2, bool p_free_array, bool copy_array)
virtual void load_serializable_pre()
void get_array_size(int32_t &dim1, int32_t &dim2)
CDynamicArray(int32_t p_dim1_size, int32_t p_dim2_size=1, int32_t p_dim3_size=1)
T get_last_element() const
T & element(T *p_array, int32_t idx1, int32_t idx2, int32_t idx3, int32_t p_dim1_size, int32_t p_dim2_size)
void set_array(T *p_array, int32_t dim1, bool p_free_array, bool copy_array)
virtual void save_serializable_pre()
Class SGObject is the base class of all shogun objects.
CDynamicArray< T > & operator=(CDynamicArray< T > &orig)
bool set_element(T e, int32_t idx1, int32_t idx2=0, int32_t idx3=0)
const char * get_array_name() const
bool delete_element(int32_t idx)
T get_element_safe(int32_t index) const
Template Dynamic array class that creates an array that can be used like a list or an array...
virtual const char * get_name() const
void clear_array(T value)
bool resize_array(int32_t ndim1, int32_t ndim2=1, int32_t ndim3=1)
: Pseudo random number geneartor
virtual void load_serializable_pre()
void set_array(T *p_array, int32_t p_num_elements, int32_t array_size)
void add_vector(bool **param, index_t *length, const char *name, const char *description="")
void set_array_name(const char *p_name)
all of classes and functions are contained in the shogun namespace
int32_t find_element(T e)
T & element(T *p_array, int32_t idx1, int32_t idx2=0, int32_t idx3=0)
T & operator[](int32_t index)
int32_t get_num_elements() const
const T & element(int32_t idx1, int32_t idx2=0, int32_t idx3=0) const
T & element(int32_t idx1, int32_t idx2=0, int32_t idx3=0)
const T & get_element(int32_t idx1, int32_t idx2=0, int32_t idx3=0) const
bool insert_element(T e, int32_t index)
CDynamicArray(T *p_array, int32_t p_dim1_size, bool p_free_array, bool p_copy_array)