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_ */

  

原文链接: https://www.cnblogs.com/lanye/p/3247732.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    CArray

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/99329

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月10日 上午5:09
下一篇 2023年2月10日 上午5:11

相关推荐