• c++ CArray函数


    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;
    通过索引设置或取得另一个元素.
  • 相关阅读:
    迁移学习
    GAN
    PCA
    LSTM
    hdu 1754 I Hate It 线段树
    hdu 4292 Food 最大流
    hdu 2222 Keywords Search AC自动机
    hdu 3572 Task Schedule hdu 2883 kebab 最大流
    poj 1966 Cable TV Network 点连通度
    hdu 2236 匹配
  • 原文地址:https://www.cnblogs.com/Malphite/p/11009298.html
Copyright © 2020-2023  润新知