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_ */
CArray的更多相关文章
- MFC模板CArray及其派生类
CArray及其派生类 1. 简介:访问方法及效率和普通的数组一样,比普通数组强大的功能是可以改变数组的大小.Array采用队列方式存储数据,因而其内部数据元素是以物理方式顺序排列的,所以检索.顺序执 ...
- MFC中Carray的使用
CArray 需要包含的头文件 <afxtempl.h> CArray类支持与C arrays相似的数组,但是必要时可以动态压缩并扩展.数组索引从0开始.可以决定是固定数组上界还是允许当添 ...
- CArray,CList,CMap如何实例化
1.定义一个CMap,向这个CMap中增加数据项(键-值对).CMap<CString, LPCTSTR, CString, LPCTSTR>m_ItemMap;CString strKe ...
- MFC中CArray类原理及其应用
1.CArray类应用 函数简介CArray::GetSize int GetSize( ) const;取得当前数组元素个数. CArray::GetUpperBound int GetUpperB ...
- c++ CArray函数
CArray属于MFC,是一个数组模板类.MFC的数组类支持的数组类似于常规数组,可以存放任何数据类型.常规数组在使用前必须将其定义成能够容纳所有可能需要的元素,即先确定大小,而MFC数组类创建的对象 ...
- CArray CList CMap 插入与遍历效率对比
前言:程序中经常用到不定量数组,选择上可以使用CArray,CList,CMap,而这三者插入及遍历的效率,未测试过,随着数据量越来越大,需要做程序上的优化,于是比较下三种类型的插入盒遍历的效率. 一 ...
- ASP.MVC时间类型json数据处理
服务端返回DateTime属性如果用自带的json方法返回的数据如下: 有2种办法解决一种是采用服务端解决方案,一种是使用前端解决方案 1.前端解决方案 第一步:对Date进行扩展 // 对Date的 ...
- SVM算法
本文主要介绍支持向量机理论推导及其工程应用. 1 基本介绍 支持向量机算法是一个有效的分类算法,可用于分类.回归等任务,在传统的机器学习任务中,通过人工构造.选择特征,然后使用支持向量机作为训练器,可 ...
- MVC解决Json DataGrid返回的日期格式是/Date(20130450000365)
实际上是Json格式化问题,我们应该在返回json的时候进行格式化,我们需要重写系统的JsonResult类 using System; using System.Collections.Generi ...
随机推荐
- Oracle查看表空间使用情况
查看表空间使用情况 select upper(f.tablespace_name) "表空间名", d.tot_grootte_mb "表空间大小(m ...
- linux服务之NFS和SAMBA服务
这几种网络文件传输最适合局域网.网络中用FTP 一:NFS服务 nfs(network file system)网络文件系统,改服务依赖于rpcbind服务.client通过rpc訪问server端的 ...
- servlet 与缓存(4)
1.设置缓存的两种情况: 第一种:对于不常常变化的数据,在servlet中能够为其设置合理的缓存时间值,以避免浏览器频繁向server发送请求,提升server的性能. 另外一种:假设要实现一种高级功 ...
- 使用数组实现队列----《数据结构与算法分析---C语言描述》
一.h文件:my_que.h #ifndef _MY_QUE_H_ #define _MY_QUE_H_ struct QueRecord; typedef struct QueRecord* que ...
- Android如何监听蓝牙耳机的按键事件
写在前面: 直接想要代码很简单,你直接把滚动条拉到最底端就可以看到.如果想要十分地了解为什么,那就按照我规划的一步一步来理解.以下测试环境以手头上有的「Bluedio + 红米手机」. 1.蓝牙耳机的 ...
- rowid结构浅析
select rowid from dual AAAAB0AABAAAAOhAAA rowid结构如下: 对象号 文件号 块号 行号 XXXXXX XXX XXXXXX X ...
- HBase概念学习(七)HBase与Mapreduce集成
这篇文章是看了HBase权威指南之后,依据上面的解说搬下来的样例,可是略微有些不一样. HBase与mapreduce的集成无非就是mapreduce作业以HBase表作为输入,或者作为输出,也或者作 ...
- uva 620 Cellular Structure
题目连接:620 - Cellular Structure 题目大意:给出一个细胞群, 判断该细胞的可能是由哪一种生长方式的到的, 输出该生长方式的最后一种生长种类, "SIMPLE&quo ...
- java实现文件传输
在windows下装了个linux虚拟机,两者之间传输文件挺麻烦的.写了个简单的文件传输程序,来方便自己数据传送. server 端: import java.io.BufferedReader;im ...
- No enclosing instance of type Hello is accessible
1.static 关键字 修饰的成员被所有对象共享(包括成员变量和方法). 修饰的成员优先于对象存在. 存储于方法区(共享数据区)的静态区中. 静态方法只能访问静态成员. 静态方法中不可以使用this ...