|
|
@@ -30,6 +30,24 @@ public: |
|
|
|
inline Array() : m_data(0), m_count(0), m_reserved(0) {} |
|
|
|
inline ~Array() { delete[] m_data; } |
|
|
|
|
|
|
|
Array(Array const& that) : m_data(0), m_count(0), m_reserved(0) |
|
|
|
{ |
|
|
|
Reserve(that.m_reserved); |
|
|
|
memcpy(m_data, that.m_data, m_count * sizeof(Element)); |
|
|
|
m_count = that.m_count; |
|
|
|
} |
|
|
|
|
|
|
|
Array& operator=(Array const& that) |
|
|
|
{ |
|
|
|
m_data = 0; |
|
|
|
m_count = 0; |
|
|
|
m_reserved = 0; |
|
|
|
Reserve(that.m_reserved); |
|
|
|
memcpy(m_data, that.m_data, that.m_count * sizeof(Element)); |
|
|
|
m_count = that.m_count; |
|
|
|
return *this; |
|
|
|
} |
|
|
|
|
|
|
|
inline Element& operator[](int n) |
|
|
|
{ |
|
|
|
return m_data[n]; |
|
|
@@ -117,6 +135,24 @@ public: |
|
|
|
inline Array() : m_data(0), m_count(0), m_reserved(0) {} |
|
|
|
inline ~Array() { delete[] m_data; } |
|
|
|
|
|
|
|
Array(Array const& that) : m_data(0), m_count(0), m_reserved(0) |
|
|
|
{ |
|
|
|
Reserve(that.m_reserved); |
|
|
|
memcpy(m_data, that.m_data, m_count * sizeof(Element)); |
|
|
|
m_count = that.m_count; |
|
|
|
} |
|
|
|
|
|
|
|
Array& operator=(Array const& that) |
|
|
|
{ |
|
|
|
m_data = 0; |
|
|
|
m_count = 0; |
|
|
|
m_reserved = 0; |
|
|
|
Reserve(that.m_reserved); |
|
|
|
memcpy(m_data, that.m_data, that.m_count * sizeof(Element)); |
|
|
|
m_count = that.m_count; |
|
|
|
return *this; |
|
|
|
} |
|
|
|
|
|
|
|
inline Element& operator[](int n) |
|
|
|
{ |
|
|
|
return m_data[n]; |
|
|
@@ -197,15 +233,35 @@ private: |
|
|
|
template<typename T1> class Array<T1, void, void> |
|
|
|
{ |
|
|
|
public: |
|
|
|
typedef T1 Element; |
|
|
|
|
|
|
|
inline Array() : m_data(0), m_count(0), m_reserved(0) {} |
|
|
|
inline ~Array() { delete[] m_data; } |
|
|
|
|
|
|
|
inline T1& operator[](int n) |
|
|
|
Array(Array const& that) : m_data(0), m_count(0), m_reserved(0) |
|
|
|
{ |
|
|
|
Reserve(that.m_reserved); |
|
|
|
memcpy(m_data, that.m_data, m_count * sizeof(Element)); |
|
|
|
m_count = that.m_count; |
|
|
|
} |
|
|
|
|
|
|
|
Array& operator=(Array const& that) |
|
|
|
{ |
|
|
|
m_data = 0; |
|
|
|
m_count = 0; |
|
|
|
m_reserved = 0; |
|
|
|
Reserve(that.m_reserved); |
|
|
|
memcpy(m_data, that.m_data, that.m_count * sizeof(Element)); |
|
|
|
m_count = that.m_count; |
|
|
|
return *this; |
|
|
|
} |
|
|
|
|
|
|
|
inline Element& operator[](int n) |
|
|
|
{ |
|
|
|
return m_data[n]; |
|
|
|
} |
|
|
|
|
|
|
|
inline T1 const& operator[](int n) const |
|
|
|
inline Element const& operator[](int n) const |
|
|
|
{ |
|
|
|
return m_data[n]; |
|
|
|
} |
|
|
@@ -247,10 +303,10 @@ public: |
|
|
|
if (count <= (int)m_reserved) |
|
|
|
return; |
|
|
|
|
|
|
|
T1 *tmp = new T1[count]; |
|
|
|
Element *tmp = new Element[count]; |
|
|
|
if (m_data) |
|
|
|
{ |
|
|
|
memcpy(tmp, m_data, m_count * sizeof(T1)); |
|
|
|
memcpy(tmp, m_data, m_count * sizeof(Element)); |
|
|
|
delete[] m_data; |
|
|
|
} |
|
|
|
m_data = tmp; |
|
|
@@ -258,10 +314,10 @@ public: |
|
|
|
} |
|
|
|
|
|
|
|
inline int Count() const { return m_count; } |
|
|
|
inline int Bytes() const { return m_count * sizeof(T1); } |
|
|
|
inline int Bytes() const { return m_count * sizeof(Element); } |
|
|
|
|
|
|
|
private: |
|
|
|
T1 *m_data; |
|
|
|
Element *m_data; |
|
|
|
int m_count, m_reserved; |
|
|
|
}; |
|
|
|
|
|
|
|