41 #ifndef _DYNAMIC_ARRAY_TEMPLATE_POINTER_H_
42 #define _DYNAMIC_ARRAY_TEMPLATE_POINTER_H_
64 m_bManageMemory = bManageMemory;
67 m_nCurrentSize = nInitialSize;
69 m_ppElements =
new T*[m_nCurrentSize];
70 for (
int i = 0; i < m_nCurrentSize; i++)
79 for (
int i = 0; i < m_nElements; i++)
80 delete m_ppElements[i];
83 delete [] m_ppElements;
90 if (m_nElements == m_nCurrentSize)
91 SetCurrentSize(m_nCurrentSize << 1);
93 m_ppElements[m_nElements++] = pElement;
98 if (nIndex < 0 || nIndex >= m_nElements)
102 delete m_ppElements[nIndex];
104 for (
int i = nIndex; i < m_nElements - 1; i++)
105 m_ppElements[i] = m_ppElements[i + 1];
116 for (
int i = 0; i < m_nElements; i++)
117 delete m_ppElements[i];
127 m_nCurrentSize = nSize;
129 delete [] m_ppElements;
130 m_ppElements =
new T[m_nCurrentSize];
137 inline const T*
operator[](
const int nElement)
const {
return m_ppElements[nElement]; }
138 inline T*&
operator[](
const int nElement) {
return m_ppElements[nElement]; }
144 void SetCurrentSize(
int nCurrentSize)
146 if (nCurrentSize <= m_nCurrentSize)
148 printf(
"error: tried to set size smaller than current size in CDynamicArray::SetCurrentSize\n");
152 m_nCurrentSize = nCurrentSize;
154 T **ppElements =
new T*[nCurrentSize];
156 for (
int i = 0; i < m_nElements; i++)
157 ppElements[i] = m_ppElements[i];
159 delete [] m_ppElements;
160 m_ppElements = ppElements;
169 bool m_bManageMemory;
const T * operator[](const int nElement) const
CDynamicArrayTemplatePointer(bool bManageMemory, int nInitialSize=100)
void AddElement(T *pElement)
~CDynamicArrayTemplatePointer()
void ClearAndResize(int nSize)
bool DeleteElement(int nIndex)
int GetStorageSize() const
T *& operator[](const int nElement)