VC程序需要的集合类

VC运行库合集:软件运行错误解决方案 本文还有配套的精品资源,点击获取 简介:VC运行库是Visual C++编译器创建的DLL集合,包含运行C++应用程序所需的基本组件。"vc运行库合集"提供多个版本的运行库,用于解决因缺失库文件而导致的错误提示,如“无法找到msvcrXX.dll”。该合集包括MSVCRT、MFC、ATL、CRT、Schannel、OpenMP等关键组件,并针对64位操作系统提供专门的库集合... 阅读详情

本文提供详细信息,以帮助您选择适于特定应用程序需要的集合类。

集合类的选择取决于许多因素,包括:

  • 类形状的特性:排序、索引和性能,如本主题稍后介绍的集合形状特性表所示
  • 类是否使用 C++ 模板
  • 存储在集合中的元素是否可以序列化
  • 存储在集合中的元素是否可以转储以用于诊断
  • 集合是否是类型安全的

下表集合形状特性总结了可用集合形状的特性。

  • 第 2 列和第 3 列描述了每个形状的排序和访问特性。在表中,术语“已排序”表示按插入或删除项的顺序确定项在集合中的顺序,而不是指项按其内容排序。术语“已索引”表示集合中的项可以通过整数索引检索,这和典型数组中的项很相似。
  • 第 4 列和第 5 列描述了每个形状的性能。在需要对集合执行多次插入操作的应用程序中,插入速度可能特别重要;而对于其他应用程序,查找速度可能更重要。
  • 第 6 列描述了每个形状是否允许重复元素。

集合形状特性


形状

已排序?

已索引?
插入元素 搜索指定元素 重复元素?
列表 是 否 快 慢 是
数组 是 按整数 慢 慢 是
映射 否 按键 快 快 否(键)是(值)

下表 MFC 集合类的特性总结了特定 MFC 集合类的其他重要特性,可以作为选择原则。您的选择可能取决于特定的因素,如类是否基于 C++ 模板,它的元素是否可以通过 MFC 的文档序列化机制序列化,它的元素是否可以通过 MFC 诊断转储机制转储,类是否是类型安全的,即是否可以保证存储在基于类的集合中和从该集合中检索的元素类型。

MFC 集合类的特性


类
使用 C++
模板
可以
序列化
可以
转储
类型安全
CArray 是 是1 是1 否
CByteArray 否 是 是 是3
CDWordArray 否 是 是 是3
CList 是 是1 是1 否
CMap 是 是1 是1 否
CMapPtrToPtr 否 否 是 否
CMapPtrToWord 否 否 是 否
CMapStringToOb 否 是 是 否
CMapStringToPtr 否 否 是 否
CMapStringToString 否 是 是 是3
CMapWordToOb 否 是 是 否
CMapWordToPtr 否 否 是 否
CObArray 否 是 是 否
CObList 否 是 是 否
CPtrArray 否 否 是 否
CPtrList 否 否 是 否
CStringArray 否 是 是 是3
CStringList 否 是 是 是3
CTypedPtrArray 是 取决于类型2 是 是
CTypedPtrList 是 取决于类型2 是 是
CTypedPtrMap 是 取决于类型2 是 是
CUIntArray 否 否 是 是3
CWordArray 否 是 是 是3

1. 若要序列化,必须显式调用集合对象的 Serialize 函数;若要转储,必须显式调用集合对象的 Dump 函数。不能用 ar << collObj 的形式进行序列化,或用 dmp << collObj 的形式进行转储。

2. 可序列化性取决于基础集合类型。例如,如果类型指针数组基于 CObArray,则它可序列化;如果基于CPtrArray,则它不可序列化。通常情况下,“Ptr”类无法序列化。

3. 如果该列中的标记为“是”,则只要按本来用途使用非模板集合类,它就是类型安全的。例如,如果将字节存储在 CByteArray 中,则该数组是类型安全的。但如果用该数组存储字符,则它的类型安全不太可靠。


VC++集合类,详细例子。 MFC 集合类可以按形态和设计方案来分类。MFC 为三种类型的集合形态提供了类: 列表 数组 映射 MFC 还提供三种类型的设计方案: 不使用 C++ 模板。 使用由简单元素组成的基于 C++ 模板的集合。 使用由类型安全指针组成的基于 C++ 模板的集合。 下表标识了按形态和设计方案排序的所有 MFC 集合类。COLLECT 示例阐释了这些集合中的 9 个,每个来自表中的一个单元格。每个代表形态和设计方案的不同组合。另外,由于根据是用来保存指向 CObjects 的指针还是指向非 CObject 的指针,CTypedPtrArray 和 CTypedPtrList 基于模板的集合的用法有所不同,因此 COLLECT 示例阐释这两种情况。COLLECT 所阐释的 9 个集合用星号指示。 集合形状 非基于模板的 基于模板的简单元素 基于模板的 typeSafe 指针 列表 CStringList* CList* CTypedPtrList CObList (属于指针)* CPtrList CTypedPtrList (属于 CObject) 数组 CByteArray CArray* CTypedPtrArray CUIntArray (属于指针) CWordArray* CDWordArray CTypedPtrArray CStringArray (属于 CObject)* CPtrArray CObArray 映射 CMapWordToPtr CMap* CTypedPtrMap* CMapWordToOb CMapStringToString* CMapStringToPtr CMapStringToOb CMapPtrToWord CMapPtrToPtr 其他 COLLECT 功能 立即下载

相关推荐

微软wvc++运行集合库

亲测好用,vc++2018 运行库集,因为其他下载站点垃圾多,选择上传,360浏览器,可自行下载

集合类(collection classes)

集合类是用来容纳和处理一组对象或标准数据类型变量的C++类。每个集合类对象可以看作一个单独的对象。类成员函数可作用于集合的所有元素。MFC提供两种类型的集合类: 基于模板的集合类 非基于模板的集合类 这两种集合类 对用户来说非常相似。基于模板的集合所包含的元素是用户自定义的数据结构或者说是抽象的数据结构,它以数组、链表和映射表三种方式组织用户自定义的数据结构。使用基于模板的集合类需要

xuyongbeijing2008的专栏 977

解决创建conda环境时Solving environment: failed 和 ResolvePackageNotFound 的错误

环境配置文件是在别的机器上导出的,文件里的软件包是按照导出文件的机器配置的,因此导出的时候,把这些包的详细信息也导了出来,即第二个等号后面跟着的信息,当我们按照这个文件创建环境时,conda就会根据我们机器的配置信息,按照配置文件里包的详细信息,去找这个包,那当然找不到,结果发现“查无此包”,因此也就会报上面的错误。上面找到了问题的所在之处,解决起来就很简单了,只需要在配置文件 environment.yml 中将包的详细信息删除,也就是第二个等号后面的内容。然而升级超级慢不说,也没有解决我的问题。...

番茄炒蛋三分糖 4万+

VC++学习笔记---集合

学习java的时候,有collection动态集合,很方便不定大小的数组操作(内部是数组或者动态链表实现)。现在回过头来学习C++ 就来看看有木有对应的动态集合对象 一、vector和array(C++11) #include &amp;lt;vector&amp;gt; ... using namespace std; vector&amp;lt;int&amp;gt; vi; int n; cin &amp;gt;&a

一个努力飞行的菜鸟 938

从Transformer到蛋白质结构预测:手把手解读ESM系列模型的核心原理与实战价值

本文深入解析了ESM系列模型如何将Transformer架构创新应用于蛋白质结构预测,揭示了其从氨基酸序列到三维结构的高效预测机制。通过掩码语言模型预训练和注意力机制,ESM模型不仅捕捉蛋白质序列的远程相互作用,还在蛋白质工程改造、药物发现等领域展现出巨大实战价值,显著提升了结构预测速度和精度。

weixin_28744423的博客 320

中小型微服务系统 硬件设备如何部署,QPS大概多少

作为一名合格的开发工程师,不仅仅要在前期开发阶段对业务和技术有深入了解,知道选用哪种合适的技术,业务如何拆分,还要思考后期线上环境,资源,延迟,性能等如何优化维护以及分布式系统一些线上生产的一些问题。 本篇主要针对之前了解的情况对硬件设备资源做一个简单的介绍: 首先分布式系统线上实践问题,我们应该对公司的流量,各个服务,网管,注册中心应该如何部署,部署多少台机器才合适,每台机器的配置如何,每天整体流量有多少,高峰期的请求量有多少,你的整体系统是否扛得住(注:很多公司现在直接使用K8S docker 实现

wangxuelei036的博客 1万+

【精心整理】【实用】visual C++中最常用的类与API函数

这篇文章能让初学者快速了解visual C++MFC中常见的核心的类与函数,虽然全部看下来有点枯燥,但对初学者快速了解MFC的框架结构很有好处。 常用类 CArchive类:用于二进制保存档案 CBitmap类:封装Windows的图形设备接口(GDI)位图 CBrush类:封装图形设备接口(GDI)中的画刷 CButto...

weixin_34279184的博客 501

Verilog基础知识11(异步FIFO为什么使用格雷码(gray-code) )

需求说明:Verilog设计 内容       :第一部分 异步FIFO为什么使用格雷码                   第二部分 格雷码在异步FIFO中的使用 来自       :时间的诗 第一部分 异步FIFO为什么使用格雷码 原文:http://www.cnblogs.com/kxk_kxk/p/3931591.html 异步FIFO通

时间的诗 8889

内存泄露

内存泄露是VC中自我认为比较难于解决的问题之一(至少现在解决起来很麻烦了)。今天用BoundsChecker调试了一下原来自己写的程序,呵呵!居然提示内存泄露40字节。看到了泄露的代码的位置,一处new的地方,由于程序写过很长时间了,所以想不起来了,干脆模拟一下吧!程序中第一了一个结构体,用于保存数据;大致是这样吧!typedef struct para{     double a

Creo二次开发 763

基于STM32与FPGA Cyclone IV的FSMC高速数据通信实战解析

本文详细解析了基于STM32的FSMC接口与FPGA Cyclone IV实现高速并行数据通信的实战方案。通过将FPGA模拟为SRAM设备,构建了MCU与FPGA之间的高速数据通道,并深入探讨了硬件连接、STM32软件配置、FPGA逻辑设计及性能优化等关键步骤,为图像处理、高速采集等需要大数据量交换的嵌入式应用提供了稳定高效的通信解决方案。

swift5iosmith的博客 296

GPT大模型在数学建模中的实战应用:从思路启发到代码生成

数学建模是将现实问题抽象为数学问题并求解的核心方法,其关键在于通过合理的假设与简化,构建可计算的数学模型。传统建模依赖MATLAB等工具进行推演试错,而大语言模型的出现革新了这一范式。GPT等模型通过理解自然语言、辅助逻辑推理与代码生成,能有效提升建模效率与质量,在问题解析、模型构建、算法实现等环节提供关键支持。本文聚焦GPT在数学建模中的具体应用,涵盖赛题解读、模型推导、代码生成与结果分析,并结合实战案例,探讨如何将其作为“副驾驶”融入建模全流程,实现人机协同的智能化建模。

weixin_29061465的博客 324

VC入门宝典 by 何志丹

這陣子從頭開始學習:---------------------为了方便,也为了vb--&gt;vc过渡成功!VC入门宝典 何志丹 『针对对象』想学VC,而不会VC的朋友.如果你刚学VC,可以看一

wangchaoqi1985的博客 599

LabVIEW安装NI-DAQmx的方法(适合2021版和2022版)

LabVIEW安装NI-DAQmx的方法(适合2021版和2022版)

qq_65101190的博客 2万+

VC里的集合类、链表类、映射类

集合类是用来容纳和处理一组对象或标准数据类型变量的C++类。每个集合类对象可以看作一个单独的对象。类成员函数可作用于集合的所有元素。MFC提供两种类型的集合类: 基于模板的集合类、非基于模板的集合类。 这两种集合类对用户来说非常相似。基于模板的集合所包含的元素是用户自定义的数据结构或者说是抽象的数据结构,它以数组、链表和映射表三种方式组织用户自定义的数据结构。使用基于模板的集合类需要用

skyandcode的专栏 5426

OSG 核心详解

OpenSceneGraph (OSG) 的核心架构、场景图管理以及几何体的绘制

qq_45859163的博客 730

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

C++/VC 学习心得

VC 心得:1:  什么时候该进行物理坐标和逻辑坐标之间的转换(LPtoDP and DPtoLP)    见VC内幕 p55    只要不该变映射模式(MM_TEXT MM_LOENGLISH等)就用不着这种转换。2: 按惯例,我们在直接调用win32函数时应该使用C++作用域分辨符(::)3: OnPrepareDC 。OnDraw会自动调用它,但是其他消息控制函数,如果使用   

mac_forward的专栏 2612

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

vc mysql保存图片_vc++图像保存,重绘

新建mfc应用程序,单文档增加绘图分别增加命令响应添加成员变量UINIT图形可以运行,如何保存呢?(一个集合类,CPtArt)用一个类的对象来保存一个图形的三个要素所以插入一个新的类(通常的类)增加三个成员变量,第一个类型,设置为公有的也可以在函数中直接写,添加起点,终点让用户在构造的时候直接传递进来给这三个成员变量赋值然后在原文件当中,对成员变量进行赋值(这样构造一个类的对象来保存一个图形的三个...

weixin_33286064的博客 252

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

关于VC6.0的预编译

                                                                           关于VC6.0的预编译       前几天有个QQ上的好友问我关于MFC中的WinMain()函数哪去了的问题,我只能说是MFC系统自动连接进去的,我还给了他一个设置了断点的工程文件,其中可以执行到_tWinMain()那儿停下来验证。然后他又问

Alex的学习之路 2540

VC面向对象开发分析与设计实例解析

VC面向对象开发分析与设计实例解析 风之韵■ yesky   众所周知,面向对象的程序设计更适合对现实生活中的描述,更加体现了软件的工业化的精神,所以现在大部分的软件开发工作都围绕OOP的思想来进行的。但是在对现实生活中的实际问题,如何对所研究的系统进行面向对象的分析与设计呢?本篇文章以一个实际的例子,向大家介绍一下如何对实际问题进行分析和设计。  一.问题描述:  该实例是一个电梯载客问题,问题

logic_202的专栏 1214

VC6.0上基于MFC的应用开发软件架构3

² MFC简介:MFC是一个应用程序框架,专门为微软的Windows操作系统创建应用程序而设计。MFC使用抽象、封装、继承、多态性和模块化的面相对象原则,在逻辑上将Windows API分类: 通用类、Windows API类、应用程序框架类以及高层抽象等。下面将这几个分类展开介绍: ü 通用类:提供类似字符串处理的类、集合类和异常类; ü Windows API类:封装了所有的Windows

XuanZuoNuo的专栏 2565

VC基本函数一览

VC基本函数一览2007-03-16 23:12CSize说明一个矩形的高和宽,调用CDC::GetTextExtent成员函数计算使用当前字体的一行文字的高和宽决定的尺寸。 CString::LoadString把一个由nID标识的字符串资源读取到现有的CString对象中。CDC::BeginPath:打开设备上下文中的路径,路径打开后,应用程序可以开始调用

vc串口程序开发 多线程 触摸屏软件界面 1668

MFC应用程序编程

一 MFC的发展 VC 1.0->VC 5.0->VC 6.0->VC2008 SP1)->VS2010 二 MFC基础 1 MFC 微软基础类库     采用类的方式,将Win32 API等进行封装,形成的库.     2 MFC相关的头文件    afx.h   (application framework, X)    afxwin.h  (类似于windows.h

redpopet 783

VC程序设计中可序列化类的实现

内容提要:本文以简单的例子介绍在Visual C++编程中数据读写的基本方法和可序列化类的实现,并简单介绍了Visual C++中序列化的使用。   数据读写是应用程序中必不可少的一部分,Visual C++中数据的读写当然也十分重要,因此VisualC++在MFC中对数据的读写创造了十分好的支持,这使得我们可以十分方便的实现我们对数据读写操作的需要。   MFC 为数据读写设

编辑编辑器 1285
上一篇: sqlite数据库判断表是否存在得方法
下一篇: CString、string与char *的比较(转帖)
zljjava
博客等级 码龄15年 155粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值