CArray是windows下的相当于动态数组的模板类。用起来及其方便,近期由于需要在JNI下的C语言中使用,自己参考CArray类函数,及其自己需要使用到的部分函数用C++实现出来,以供自己使用,在此贴出来。

  1. #ifndef MyCArray_H_
  2. #define MyCArray_H_
  3.  
  4. #include <stdio.h>
  5. #include <string.h>
  6.  
  7. template <class TYPE,class ARG_TYPE >
  8. class MyCArray {
  9. public:
  10. //构造
  11. MyCArray()
  12. {
  13. int num=1;//初始化数组大小为1
  14. m_pData=new TYPE[num];
  15. m_count=0;
  16. m_nSize=num;
  17. }
  18. //析构
  19. virtual ~MyCArray()
  20. {
  21. if(m_pData)
  22. delete [] m_pData;
  23. }
  24.  
  25. //方法
  26. public:
  27. //在数组末尾添加元素,有必须,扩展数组
  28. int Add(TYPE &data)
  29. {
  30. if(m_count>=m_nSize)
  31. {
  32. ReAlloc();//扩展数组
  33. }
  34. m_pData[m_count++]=data;
  35. return m_count;
  36. }
  37.  
  38. //返回在给定索引上的值
  39. TYPE GetAt( int nIndex ) const
  40. {
  41. if (nIndex<m_count && nIndex>=0)
  42. {
  43. return m_pData[nIndex];
  44. }
  45. else
  46. {
  47. printf("error GetAt");
  48. }
  49. }
  50.  
  51. //从此数组中移去所有元素
  52. void RemoveAll( )
  53. {
  54. //将数组变为空
  55. int len=1;
  56. TYPE *p=new TYPE[len];
  57. delete []m_pData;
  58. m_pData=p;
  59. m_nSize=len;
  60. m_count=0;
  61. }
  62.  
  63. //返回数组大小
  64. int GetSize( ) const
  65. {
  66. return m_count;
  67. }
  68.  
  69. private:
  70.  
  71. //动态分配空间
  72. void ReAlloc()
  73. {
  74. int len=m_nSize*2;
  75. TYPE *p=new TYPE[len];//扩展一个内存
  76. memcpy(p,m_pData,m_nSize*sizeof(TYPE));
  77. delete[] m_pData;
  78. m_pData=p;
  79. m_nSize=len;
  80.  
  81. }
  82.  
  83. //属性
  84. private:
  85. TYPE *m_pData; //数组的指针
  86. int m_nSize;//Array总长度
  87. int m_count;//
  88. };
  89.  
  90. #endif /* MyCArray_H_ */

  

CArray的更多相关文章

  1. MFC模板CArray及其派生类

    CArray及其派生类 1. 简介:访问方法及效率和普通的数组一样,比普通数组强大的功能是可以改变数组的大小.Array采用队列方式存储数据,因而其内部数据元素是以物理方式顺序排列的,所以检索.顺序执 ...

  2. MFC中Carray的使用

    CArray 需要包含的头文件 <afxtempl.h> CArray类支持与C arrays相似的数组,但是必要时可以动态压缩并扩展.数组索引从0开始.可以决定是固定数组上界还是允许当添 ...

  3. CArray,CList,CMap如何实例化

    1.定义一个CMap,向这个CMap中增加数据项(键-值对).CMap<CString, LPCTSTR, CString, LPCTSTR>m_ItemMap;CString strKe ...

  4. MFC中CArray类原理及其应用

    1.CArray类应用 函数简介CArray::GetSize int GetSize( ) const;取得当前数组元素个数. CArray::GetUpperBound int GetUpperB ...

  5. c++ CArray函数

    CArray属于MFC,是一个数组模板类.MFC的数组类支持的数组类似于常规数组,可以存放任何数据类型.常规数组在使用前必须将其定义成能够容纳所有可能需要的元素,即先确定大小,而MFC数组类创建的对象 ...

  6. CArray CList CMap 插入与遍历效率对比

    前言:程序中经常用到不定量数组,选择上可以使用CArray,CList,CMap,而这三者插入及遍历的效率,未测试过,随着数据量越来越大,需要做程序上的优化,于是比较下三种类型的插入盒遍历的效率. 一 ...

  7. ASP.MVC时间类型json数据处理

    服务端返回DateTime属性如果用自带的json方法返回的数据如下: 有2种办法解决一种是采用服务端解决方案,一种是使用前端解决方案 1.前端解决方案 第一步:对Date进行扩展 // 对Date的 ...

  8. SVM算法

    本文主要介绍支持向量机理论推导及其工程应用. 1 基本介绍 支持向量机算法是一个有效的分类算法,可用于分类.回归等任务,在传统的机器学习任务中,通过人工构造.选择特征,然后使用支持向量机作为训练器,可 ...

  9. MVC解决Json DataGrid返回的日期格式是/Date(20130450000365)

    实际上是Json格式化问题,我们应该在返回json的时候进行格式化,我们需要重写系统的JsonResult类 using System; using System.Collections.Generi ...

随机推荐

  1. 【转】windows 7系统安装与配置Tomcat服务器环境

    原文链接: windows 7系统安装与配置Tomcat服务器环境 工具/原料 jdk-8u51-windows-x64(我的系统是64位系统,32位的请选x86下载)下载地址:http://www. ...

  2. mpi中利用自定义归约操作实现merge

    在归并排序中,很重要的一步是将两个排序数组合并成一个数组,这个操作叫merge.merge操作可以用来解决某些Top K问题. 问题描述 在哼唱搜索中,用户通过哼唱一个音乐片段去搜索与其相似的音乐.后 ...

  3. Light OJ 1318 Strange Game 组合数+高速幂+分解因子

    长度为l的用k种字符组成的字符串有k^l中 当中m个字符要不同样 那就是k^l*C(l, m)*(k-1)^m 有反复 要除以2 可是你mod n了 不能直接除 n不一定是素数 所以不能乘以逆元 所以 ...

  4. c#基础练习之if结构

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace if语句 ...

  5. C#由变量捕获引起对闭包

    C#由变量捕获引起对闭包的思考   前言 偶尔翻翻书籍看看原理性的东西确实有点枯燥,之前有看到园中有位园友说到3-6年工作经验的人应该了解的.NET知识,其中就有一点是关于C#中的闭包,其实早之前在看 ...

  6. SwifThumb.com 第一家Swift开发人员论坛 QQ群 343549891

     官方QQ群2: 兴许会有app出来让大家随时地学习Swift并在线交流~ watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQW5ld2N6cw==/font ...

  7. 初入Android--环境搭建

    Android SDK 可以下载adt-bundle:包含了装好插件的eclipse和android sdk.下载好后,首先设置ANDROID_HOME环境变量:ANDROID_HOME=/home/ ...

  8. 相遇Qt5

    使用Qt5.x版本中的不同方面来开发应用程序,着重于新的Qt Quick的技术,提供了编写C++后端的必要内容,并扩展了Qt Quick.     本章提供了关于Qt5高层次的概述.它对开发者有效的展 ...

  9. boost asio io_service学习笔记

    构造函数 构造函数的主要动作就是调用CreateIoCompletionPort创建了一个初始iocp. Dispatch和post的区别 Post一定是PostQueuedCompletionSta ...

  10. HBase数据存储格式

    好的数据结构,对于检索数据,插入数据的效率就会很高. 常见的数据结构 B+树 根节点和枝节点非常easy,分别记录每一个叶子节点的最小值,并用一个指针指向叶子节点.  叶子节点里每一个键值都指向真正的 ...