说白了是MFC与STL标准库的函数

CMapStringToString  映射表字符对字符
CObject   MFC的大多数基类,很常见很基础的 一个类。
CObList   就是存储CObject的列表
CMapStringToOb   通过字符对CObList/CObject
                               这个用起来就有点意思了,可以建立一个基于CObject的类(不基于的话也行),CObList把这些类串起来(不基于的话这里需要强转),然后还可以CMapStringToOb来映射管理。说起来很简单,但是实际使用的话很强大,可以解决很多复杂的逻辑关系或者数据关系。
当然CMap<Key,ARG_Key,Values,ARG_Values> 更加强大,不仅是字符与CObject类,所有类型均可了。

map<key, Values> 虽然作为STL的函数,功能上感觉也差不多,map也好 vector也好,均能够存储一般数据类型、数据结构体、类的指针。

以下摘自: http://blog.sina.com.cn/s/blog_4b559bf30100gta6.html

在MFC中,有CMap相关的map类, 在 map中有map。

// Maps (aka Dictionaries)
class CMapWordToOb;         // map from WORD to CObject*
class CMapWordToPtr;        // map from WORD to void*
class CMapPtrToWord;        // map from void* to WORD
class CMapPtrToPtr;         // map from void* to void*

// Special String variants
class CMapStringToPtr;      // map from CString to void*
class CMapStringToOb;       // map from CString to CObject*
class CMapStringToString;   // map from CString to CString

对于以上可以直接用stl中的一个map类型全部概况。

map<Word, CObject*>

map<Word, void*>

map<void*, Word>

map<void*, void*>

map<CString,void*>

map<CString, CObject*>

map<CString, CString>

由此,还是map简练。

再看遍历时,各个处理如下:

CMap<DWORD, DWORD&, ThreadInfo, ThreadInfo&> m_threadMap;   //定义一组线程map

则在

ThreadInfo info;

DWORD Key ;
POSITION pos = threadMap.GetStartPosition();
while (pos != NULL)
{

threadMap.GetNextAssoc(pos, Key, info);
    {
     。。。
    }
}

如果采用std中的map处理则

map<DWORD ,ThreadInfo>m_threadMap;

map<DWORD ,ThreadInfo>::iteraotr pIt;

for(pIt = m_threadMap.begin(); pIt != m_threadMap.end(); pIt++){

......

}

简单明了,胜过用mfc中繁芜而又不清晰的过程。所以多用std做程序开发比用一些过时的要好得多。

何须浪费时间去知道几个茴字的写法呢。是不是。

浅谈 CMap 与 map相关推荐

  1. 浅谈Java中的Set、List、Map的区别

    就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是想对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操 ...

  2. 浅谈 LiveData 的通知机制

    LiveData 和 ViewModel 是 Google 官方的 MVVM 架构的一个组成部分.巧了,昨天分析了一个问题是 ViewModel 的生命周期导致的.今天又遇到了一个问题是 LiveDa ...

  3. 浅谈L0,L1,L2范数及其应用

    原文传送门:浅谈L0,L1,L2范数及其应用 浅谈L0,L1,L2范数及其应用 在线性代数,函数分析等数学分支中,范数(Norm)是一个函数,其赋予某个向量空间(或矩阵)中的每个向量以长度或大小.对于 ...

  4. python竞赛_浅谈Python在信息学竞赛中的运用及Python的基本用法

    浅谈Python在信息学竞赛中的运用及Python的基本用法 前言 众所周知,Python是一种非常实用的语言.但是由于其运算时的低效和解释型编译,在信息学竞赛中并不用于完成算法程序.但正如LRJ在& ...

  5. 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路

    原文地址: http://blog.csdn.net/luoshengyang/article/details/6621566 上一篇文章Android进程间通信(IPC)机制Binder简要介绍和学 ...

  6. python编写函数_浅谈Python 函数式编程

    匿名函数lambda表达式 什么是匿名函数? 匿名函数,顾名思义就是没有名字的函数,在程序中不用使用 def 进行定义,可以直接使用 lambda 关键字编写简单的代码逻辑.lambda 本质上是一个 ...

  7. 算力限制场景下的目标检测实战浅谈

    作者:张钊宁 本文为极市原创,转载请注明作者和出处. 原文:算力限制场景下的目标检测实战浅谈 本篇文章为张博19年1月18日在极市直播分享的文字详细整理. 算力限制场景主要是指在嵌入式设备,也就是算力 ...

  8. java 多线程同步_浅谈Java多线程(状态、同步等)

    Java多线程是Java程序员必须掌握的基本的知识点,这块知识点比较复杂,知识点也比较多,今天我们一一来聊下Java多线程,系统的整理下这部分内容. 一.Java中线程创建的三种方式: 1.通过继承T ...

  9. 浅谈:Spring Boot原理分析,切换内置web服务器,SpringBoot监听项目(使用springboot-admin),将springboot的项目打成war包

    浅谈:Spring Boot原理分析(更多细节解释在代码注释中) 通过@EnableAutoConfiguration注解加载Springboot内置的自动初始化类(加载什么类是配置在spring.f ...

最新文章

  1. 【Kotlin】Kotlin 面向对象 ( 类 | 成员变量 | 成员方法 | 封装 | 继承 | 多态 )
  2. ABAPプログラム開発において使用実績のある汎用モジュール一覧
  3. 项目忙还要过软考,您需要简练!
  4. CSS文本对齐text-align详解
  5. php基础教程 第五步 逻辑控制
  6. c语言程序设计基础1千克,c语言学习知识编程经典编辑题汇总整编.doc
  7. dj鲜生-29-登陆后欢迎信息的显示
  8. 【华为云技术分享】上亿条数据,如何查询分析简单又高效?
  9. SQL Server 索引结构及其使用(四)
  10. lightbox的一个ajax效果
  11. 服务器软件是否支持双机热备,服务器双机热备建议方案.doc
  12. deep|Bayes(4)
  13. 维吾尔语小程序开发个人中心插件
  14. 素数表的C++实现:快速进行素数筛选(埃氏筛法)
  15. Windows 10 打印机驱动安装(以惠普M136 MFP为例)
  16. 腾讯云多媒体文件处理总结
  17. CentOS8桌面图标不显示
  18. 记录在处理SIF数据中,遇到的一些问题及解决过程
  19. python采集最新世界大学排名, 来看看你的母校上榜没~
  20. 学习 Linux 有哪些好处?

热门文章

  1. 微软文本转语音小工具(Text to speech)网页版
  2. python中使用什么表示代码块、不需要使用大括号_Python3 基础语法
  3. 这些手机软件,你使用过哪一个?
  4. 简易时间计时器的实现
  5. 15. cookie、session、token
  6. 掘金100道(2)['1', '2', '3'].map(parseInt) what why ?
  7. 一元运算符 + 表示正号 - 表示负号
  8. 螃蟹芯片RTL8762之修改蓝牙设备类型
  9. 最详细的 Hadoop 入门教程
  10. 无刷直流电机(BLDC)建模与仿真