CArray属于MFC,是一个数组模板类。MFC的数组类支持的数组类似于常规数组,可以存放任何数据类型。常规数组在使用前必须将其定义成能够容纳所有可能需要的元素,即先确定大小,而MFC数组类创建的对象可以根据需要动态地增大或减小,数组的起始下标是0,而上限可以是固定的,也可以随着元素的增加而增加,数组在内存中的地址仍然是连续分配的。但是声明一个carray数组必须是确定数组长度,可以之后随元素增加而增加。
使用CArray要添加一个头文件#include <afxtempl.h>
  定义一个CArray数组对象CArray<int, int> arr;第一个参数为数组元素的类型,第二个参数为int类型,一般有两种选择,一种选择与第一个参数类型相同,它意味着数组对象作为参数传递时,传递的是数组对象。第二种选择是第一个参数类型的引用,它意味着数组对象作为参数传递时,传递的是数组对象的指针,这种方法效率更高。
   SetSize函数设定数组的大小,该函数有两个参数,第一个参数设定数组的大小;第二个参数设定数组增长时内存分配的大小,缺省值是-1,使用缺省值可以保证内存分配得更加合理。本例中第二个参数是n,意即增加一个数组元素会分配n个元素大小的内存供数组使用。 可以随时使用SetSize函数设定数组的大小,如果第一个参数值小于数组已有成员数量,多于第一个参数值的成员将被截去并释放相应内存。在使用CArray数组前,最好先使用SetSize确定其大小并申请存储空间。如果不这样做,向数组中增加元素时,需要不断地移动和拷贝元素造成运行的低效率和内存碎块。
   SetAt方法初始化数组元素,void SetAt( int n, ARG_TYPE newElement );将第n的元素的值设置成newElement.
一些基本函数:

CArray::GetSize

int GetSize( ) const;
取得当前数组元素个数.

CArray::GetUpperBound

int GetUpperBound( ) const;
最得最大的元素的索引,由于C的数组是从0开始,所以此函数的返回值比GetSize的返回值比 小.

CArray::SetSize

void SetSize( int nNewSize, int nGrowBy = -1 );
throw( CMemoryException );
设置数组的大小.

CArray::FreeExtra

void FreeExtra( );
释放未使用的空间.

CArray::RemoveAll

void RemoveAll( );
删除所有的元素.

CArray::GetAt

TYPE GetAt( int nIndex ) const;
根据索引(参数)取得某个数组元素的值.

CArray::SetAt

void SetAt( int nIndex, ARG_TYPE newElement );
将第nIndex的元素的值设置成newElement.

CArray::ElementAt

TYPE& ElementAt( int nIndex );
取得第nIndex个元素的引用.

CArray::GetData

const TYPE* GetData( ) const;
TYPE* GetData( );
取得静态数组指针.

void SetAtGrow( int nIndex, ARG_TYPE newElement );

throw( CMemoryException );
将第nIndex个元素设置成newElement,如果数组元素不够,会增加空间.

CArray::Add

int Add( ARG_TYPE newElement );
throw( CMemoryException );
增加一个元素.

CArray::Append

int Append( const CArray& src );
将另一个数组追加过来.

void Copy( const CArray& src );

复制数组,已经内容将会被覆盖.

CArray::InsertAt

void InsertAt( int nIndex, ARG_TYPE newElement, int nCount = 1 );
throw( CMemoryException );
void InsertAt( int nStartIndex, CArray* pNewArray );
throw( CMemoryException );
插入一个元素(或另一个数组)到数组.

CArray::RemoveAt

void RemoveAt( int nIndex, int nCount = 1 );
删除另一个元素.

CArray::operator [ ]

TYPE& operator []( int nIndex );
TYPE operator []( int nIndex ) const;
通过索引设置或取得另一个元素.

c++ CArray函数的更多相关文章

  1. Android jni系统变量、函数、接口定义汇总

    在做Android jni开发时,jni为我们提供了哪些函数.接口.变量,有时候一头雾水,今天就把jni.h中定义的所有内容列出来,供自己查阅: /* * Copyright (C) 2006 The ...

  2. jQuery理解之(二)功能函数

    在javascript编程中,开发者通常需要编写很多小程序来实现一些特定的功能.例如浏览器检测,字符串处理.数组的编辑等.jQuery对这些常用的程序进行了总结,提供了很多实用的函数. 1.检测浏览器 ...

  3. MFC模板CArray及其派生类

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

  4. PHP之数组函数

    php数组中的预定义变量 预定义常量 CASE_LOWER (integer) CASE_LOWER 用在array_change_key_case()中将数组的键名转换为小写字母.这也是array_ ...

  5. MFC中Carray的使用

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

  6. LoadRunner 函数大全之中文解释

    LoadRunner 函数大全之中文解释 // sapgui_table_set_column_selected 模拟用户 // 单击表中的列标题. int sapgui_table_set_colu ...

  7. jQuery功能函数详解

    jQuery通过$.browser对象获取浏览器信息. 属性 说明msie 如果是ie为true,否则为falsemozilla 如果是mozilla相关的浏览器为true,否则为falsesafar ...

  8. MFC中存在的不属于任何类的全局函数,它们统统在函数名称开头加上Afx

    MFC中存在的不属于任何类的全局函数,它们统统在函数名称开头加上Afx. 函数名称 说明 AfxWinInit 被WinMain(MFC提供)调用的一个函数,用做MFC GUI程序初始化的一部分,如果 ...

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

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

随机推荐

  1. 【错误收集】SVN冲突解决 标签: 错误收集 2016-03-13 08:44 624人阅读 评论(24) 收藏

    最近在倒代码,这真的是一件挺低效率的事情的,但是为了之后工作的进行,必须把这些已经做好的界面,做好的功能搬到新的框架上来,所以安排了10来个同学一起倒代码,因为大家共用一个解决方案,所以使用svn来进 ...

  2. 【uml】之用例图中的关系 标签: uml图形 2014-11-23 11:10 1422人阅读 评论(29)

    用例图显示谁是相关的用户,用户希望系统提供什么样的服务(用例),用例之间的关系图,用例图主要的作用是获取需求.指导测试.所以,用例图是站在用户的角度来画的图,应该体现的是用户想要的功能,并不需要体现如 ...

  3. Nuxt.js打造旅游网站第2篇_首页开发

    页面效果: 1.初始化默认布局 nuxtjs提供了一个公共布局组件layouts/default.vue,该布局组件默认作用于所有页面,所以我们可以在这里加上一些公共样式,在下一小结中还会导入公共组件 ...

  4. @atcoder - AGC035F@ Two Histograms

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个 N*M 的方格,我们通过以下步骤往里面填数: (1)将 ...

  5. @总结 - 2@ 位运算卷积/子集卷积 —— FWT/FMT

    目录 @0 - 参考资料@ @1 - 异或卷积概念及性质@ @2 - 快速沃尔什正变换(异或)@ @3 - 快速沃尔什逆变换(异或)@ @4 - 与卷积.或卷积@ @5 - 参考代码实现@ @6 - ...

  6. 洛谷P2947 [USACO09MAR]向右看齐Look Up

    #include<cstdio> #include<algorithm> #include<stack> #include<cctype> using ...

  7. HZOJ 那一天我们许下约定

    比较好想的一道题,只是那个组合数比较恶心. 先说一下我最开始想的$n^4$的沙雕dp: 设f[i][j][k]为前i天给了j个,第i天给了k个,则f[i][j][k]=∑f[i-1][j-k][o]; ...

  8. 修改UISearchBar背景

    转载:http://blog.csdn.net/favormm/archive/2010/11/30/6045463.aspx UISearchBar是由两个subView组成的,一个是UISearc ...

  9. Simpson公式的应用(HDU 1724/ HDU 1071)

    辛普森积分法 - 维基百科,自由的百科全书 Simpson's rule - Wikipedia, the free encyclopedia 利用这个公式,用二分的方法来计算积分. 1071 ( T ...

  10. H3C IP及其相关协议