首页 > 其他分享 >vc入门宝典(九)

vc入门宝典(九)

时间:2022-10-05 11:34:58浏览次数:52  
标签:vc const 入门 int 宝典 CObject POSITION var position


集合类使用心得

何志丹

MFC提供集合类(Collect)专门负责数据对象的存储和管理,MFC的集合类分为三类,分别用于处理三类不同性质的数据结构:表(List,类似于数据结构的双链表),数组(Array)和映射(Map,具有类似字典的功能).


一,数组使用心得

原型:TYPE, class ARG_TYPE
简单地说是你输入的时候用ARG_TYPE类,输出的时候用TYPE,自动实现转换.

具体实现可以看c:/program files/microsoft visual studio/vc98/mfc/include/afxtempl.h.

如:

#include "afxtempl.h"//那个类需要那些头文件可以查看msdn,在类总括的最后

CArray<int, char> Vars;

Vars.SetSize(3,1);

Vars.SetAt(0,'a');

int x= Vars.GetAt(0);

这种性质对于自定义类更有效,因为我可以通过重载”=”,来控制改化过程.

设置断点,我们会发现这个类有三个类成员:m_nSize,m_nMaxSize,m_nGrowBy,分别对应元素个数,已经开辟的空间,空间不足时,每次开辟的多少个元素的空间.

常见函数:

int GetSize( ) const得到m_nSize的值.

int GetUpperBound( ) const;数组的上界,m_nSize-1.

void SetSize( int nNewSize, int nGrowBy
void FreeExtra( );整理多余的空间,使m_nMaxSize = m_nSize.

void RemoveAll( );删除全部元素.

TYPEnIndex
void SetAt( int nIndex, ARG_TYPE newElement ); nIndex不能越界.

const TYPE* GetData( ) const;将数据指针返回.

void SetAtGrow( int nIndex, ARG_TYPE newElement
int Add( ARG_TYPE newElement
int Append( const CArray& src
void InsertAt( int nIndex, ARG_TYPE newElement, int nCount = 1 );
void InsertAt( int nStartIndex, CArray* pNewArrayTYPE& operator []( int nIndex
TYPEnIndex
其它数组有:

CByteArray 支持字节数组.

CWordArray 支持字数组.

CDWordArray 支持双字节数组.

CObArray 支持COject类型指针数组.

CPtrArray 支持Void类型指针数组.

CUIntArray 支持无符号整形数组.

CStringArray 支持CString数组.

用法与上面基本一致.

二, 表使用心得

我以CStringList为例,谈一下使用表的心得.注意:查看MSDN,实际上看的是CObList,注意相应的类型改成CString类,当然还有一些小差别,具体看vc的提示,最好安装vc_assist6.下面这个例子几乎用到这个类所有的函数.



CStringList var(15);

POSITION position;

position = var.InsertAfter(NULL,"item1");

position = var.InsertAfter(position,"item3");

position = var.InsertBefore(position,"item2");



for( position = var.GetHeadPosition(); NULL != position ; )

AfxMessageBox(var.GetNext(position));



for( position = var.GetTailPosition(); NULL != position ;var.GetPrev(position))

{

CString str;

str = var.GetAt(position);


if("item3"==str)

{

var.RemoveAt(position);

}

else

{

str.MakeUpper();

var.SetAt(position,str);

}


}



var.RemoveHead();

var.RemoveTail();

var.RemoveAll();


var.AddHead("he");

var.AddTail("dan");



position = var.Find("he");

var.SetAt(position,"He");


position = var.FindIndex(1);

var.SetAt(position,"Dan");

//end

下面是该类函数的简介.

POSITION InsertBefore( POSITION position, CObject* newElement );

POSITION InsertAfter( POSITION position, CObject* newElement );

在一个位置前或后插入一个新元素.



POSITION GetHeadPosition( ) const;

POSITION GetTailPosition( ) const;

获得头位置和尾位置.

CObject*& GetNext( POSITION& rPosition );

CObject* GetNext( POSITION& rPosition ) const;

CObject*& GetPrev( POSITION& rPosition );

CObject* GetPrev( POSITION& rPosition ) const;

获得后一元素或前一元素,注意rPosition会变.

CObject*& GetAt( POSITION position );

CObject* GetAt( POSITION position ) const;

根据位置得到元素.

void SetAt( POSITION pos, CObject* newElement );

根据位置设置元素.

void RemoveAt( POSITION position );

根据位置删除元素.

CObject* RemoveHead( );删除并返回头元素

CObject* RemoveTail( ); 删除并返回尾元素

POSITION AddHead( CObject* newElement );增加头元素
void AddHead( CObList* pNewList );在前面加一个表
POSITION AddTail( CObject* newElement );增加尾元素
void AddTail( CObList* pNewList );在后面加一个表
POSITION Find( CObject* searchValue, POSITION startAfter = NULL ) const根据元素值找位置.
POSITION FindIndex( int nIndex ) const根据索引找位置.

标签:vc,const,入门,int,宝典,CObject,POSITION,var,position
From: https://blog.51cto.com/u_15724537/5732450

相关文章

  • VC雕虫小技集(七)
    VC雕虫小技集(七)何志丹1,图片控件右键属性type:bitmap你直接选image也行IDB_BITMAP1位图的IDm_ctrl是与图片控件相关联的控制型变量voidCDlg2Dlg::OnButton1(){......
  • VC入门宝典十一(xml)
    xml                                                 何志丹我们建立一个xml文件,内容如图所示:一,建立一个基于对......
  • Azure DevOps Server 2022新功能:全新的TFVC操作界面
    AzureDevOpsServer(之前名称为TFS)从2013年开始就支持分布式(Git)和集中式(TFVC)两种代码库,近年来由于Git被软件研发团队广泛采纳,集中式代码库(TFVC或SVN)逐渐被开发人员抛弃;但......
  • VC雕虫小技集(五)
    VC雕虫小技集(五)何志丹1,vc中右键点击一个类或宏,可以察看他的定义,但如何返回初始地方呢?installvisualassist,anduseAlt+leftarrow按菜单中的后退(<-转45度)按......
  • VC入门宝典三(String)
    CString何志丹主要内容:1,主要函数的实现2,常用函数3.CString与char[]的相互转换4,将NULL字节放入CString中vc中最主要函数不易理解。CString::CString(c......
  • vc入门宝典七(工具栏)
    工具栏                    何志丹主要内容:1,概要。2,常用函数3,实例。4,动态建立工具条5,在工具栏中嵌控件6,用对话框加位图......
  • vc6.0安装失败解决办法
                                                       ​​何志丹​​---------------------下面的部分是亲身经历安装盘所在目录和安装后......
  • Markdown语法快速入门
    Markdown语法快速入门一、标题1.1、共分六级标题一级字体最大,六级字体最小可以使用相应的快捷键,比如:一级标题为:Ctrl+1二、字体样式2.1、粗体字英文状态下,输入......
  • python的入门TCP编程
    一、创建TCP服务器创建TCP服务器的流程:使用socket创建一个套接字使用bind绑定IP和端口使用listen让套接字变成可以被动连接使用accept等待客户端的连接使用recv/send接收......
  • Markdown语法快速入门
    Markdown语法快速入门一、标题1.1、共分六级标题一级字体最大,六级字体最小可以使用相应的快捷键,比如:一级标题为:Ctrl+1二、字体样式2.1、粗体字英文状态下,输入......