CArray
CArray是windows下的相当于动态数组的模板类。用起来及其方便,近期由于需要在JNI下的C语言中使用,自己参考CArray类函数,及其自己需要使用到的部分函数用C++实现出来,以供自己使用,在此贴出来。
#ifndef MyCArray_H_ #define MyCArray_H_ #include <stdio.h> #include <string.h> template <class TYPE,class ARG_TYPE > class MyCArray { public: //构造 MyCArray() { int num=1;//初始化数组大小为1 m_pData=new TYPE[num]; m_count=0; m_nSize=num; } //析构 virtual ~MyCArray() { if(m_pData) delete [] m_pData; } //方法 public: //在数组末尾添加元素,有必须,扩展数组 int Add(TYPE &data) { if(m_count>=m_nSize) { ReAlloc();//扩展数组 } m_pData[m_count++]=data; return m_count; } //返回在给定索引上的值 TYPE GetAt( int nIndex ) const { if (nIndex<m_count && nIndex>=0) { return m_pData[nIndex]; } else { printf("error GetAt"); } } //从此数组中移去所有元素 void RemoveAll( ) { //将数组变为空 int len=1; TYPE *p=new TYPE[len]; delete []m_pData; m_pData=p; m_nSize=len; m_count=0; } //返回数组大小 int GetSize( ) const { return m_count; } private: //动态分配空间 void ReAlloc() { int len=m_nSize*2; TYPE *p=new TYPE[len];//扩展一个内存 memcpy(p,m_pData,m_nSize*sizeof(TYPE)); delete[] m_pData; m_pData=p; m_nSize=len; } //属性 private: TYPE *m_pData; //数组的指针 int m_nSize;//Array总长度 int m_count;// }; #endif /* MyCArray_H_ */