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

      

  • 相关阅读:
    操作系统:进程间的相互作用(多线程基础)
    一个互联网研发团队的标准配置
    一个电商项目的功能模块梳理2
    一个电商项目的功能模块梳理2
    一个电商项目的功能模块梳理
    一个电商项目的功能模块梳理
    CTO、技术总监、首席架构师的区别
    CTO、技术总监、首席架构师的区别
    论代码稳定
    论代码稳定
  • 原文地址:https://www.cnblogs.com/lanye/p/3247732.html
Copyright © 2020-2023  润新知