VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 666|回复: 5

VC++基础班-[28]动态数组及动态链表的讲解

[复制链接]
01_avatar_middle
online_admins 发表于 2018-2-8 00:48:20 | 显示全部楼层 |阅读模式
C++中也有相应的动态数组、动态链表、映射表的模板类,就是STL中的:vector、list、map
他们属于C++标准中的一部分,对于程序的移植性来说也是不错的,但是在MFC编程中使用 CArray、CList、CMap 会更方便一些!
CArray、CList、CMap 的由来?……

①、数组的基本说明:
数组是固定大小的,相同数据类型的元素的顺序集合,每个元素在数组中有一个固定的位置。
将10个数放入数组中,假设数组的名称为number,可以称数组中第一个元素为 number[0],第二个数为 number[1]……其中 0、1~9 称为元素的下标,
下标表明元素在数组中的相对位置。

例如,普通的常规静态数组定义为:
  1. int number[20];
  2. CPoint pt[10];
  3. CButton btn[10];
复制代码

====================================================
②、MFC中的动态数组类是:CArray
CArray 是一个模板类,类似于常规数组,但是长度可动态增长;
常规数组在使用前必须先知道元素的个数,即先确定大小,而MFC的动态数组类 CArray 创建的对象可以根据需要动态地增大或减小,
数组的起始下标是0,而上限可以是固定的,也可以随着元素的增加而增加,数组在内存中的位置仍然是连续的(这一点很关键)!

虽然 CArray 是一个模板类,但是微软在 MFC 中针对各种常用的变量类型分别定义了:
CByteArray、CDWordArray、CObArray、CPtrArray、CStringArray、CUIntArray、CWordrray 等,
所以,如果大家在程序中使用的数据结构有合适以上几种的类型的,可以直接拿过来用,无需重复定义,详见MSDN!
========================================================
③、CArray 类型对象的定义:其中带有 ARG_ 前缀的是传入类型,另外一个则是返回类型
④、CArray 类的使用:
⑤、CArray 的效率问题:

====================================================
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
====================================================
⑥、链表的基本说明:
链表也是一个有序数据的集合,但每个元素包含下一个元素的地址。
每个元素包含两部分:数据和链(链是存储下一个元素地址的指针)
此处只讨论单链表,每个节点仅有一个指向后继节点的链。通常使用一个指针变量指向第一个元素,称为链表的头指针。链表的最后一个元素包含一个空指针,标识链表的结束。
链表是一种复杂的数据结构,其数据之间的相互关系使链表分成三种:单链表、循环链表、双向链表

链表在内存中的位置是不连续的(这一点很关键)!

例如,普通的链表节点定义为:
struct node
{
    int num;
    struct node *p;
} ;
====================================================
⑦、MFC中的动态链表类是:CList
====================================================
⑧、CList 类型对象的定义:其中带有 ARG_ 前缀的是传入类型,另外一个则是返回类型
====================================================
⑨、CList 类的使用:
⑩、※※※ 链表与数组的区别 ※※※

11、映射表的基本说明:
12、MFC中的动态映射表类是:CMap
13、CMap 类型对象的定义:其中带有 ARG_ 前缀的是传入类型,另外一个则是返回类型
14、CMap 类的使用:

★ 课后作业:
1、练习使用 CStringArray 等类的使用;

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
教程在线观看地址:
https://www.bilibili.com/video/av39706341/?p=31
https://www.bilibili.com/video/av39706341/?p=32
MP4高清视频下载地址:链接:https://pan.baidu.com/s/1THrQ0dYxwabwMx_24qJrrw 提取码:a1my
本节课件下载(回复后可见):
游客,如果您要查看本帖隐藏内容请回复

备注:VIP会员可免费下载本站所有资源(点击查看)
提示:通过购买VC驿站U盘打包(点击查看)也可加入终身Vip会员^_^




上一篇:VC++基础班-[27]实现一个简单的任务管理器
下一篇:VC++基础班-[29]CListCtrl的自绘操作
95_avatar_middle
在线会员 发表于 2019-2-17 14:03:18 | 显示全部楼层
感谢老大的无私奉献
98_avatar_middle
在线会员 发表于 2019-2-23 12:35:04 | 显示全部楼层
谢谢分享 学习
80_avatar_middle
在线会员 发表于 2019-3-4 13:26:07 | 显示全部楼层
VC++基础班-[28]动态数组及动态链表的讲解
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-3-26 11:28

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表