vc中如何选择使用STL和mfc的CArray等集合类

liudianshisan 2009-08-24 03:30:54
C++中有STL:vector、list、map、set、multimap、multiset,

MFC中有一套容器类:CArray/CList,CObArray/CObList,CTypedListPtr......


对这两种容器类比较熟悉的朋友来聊一下这两种容器类的区别和联系吧!


只要说得是对的,就给分,谢谢
...全文
404 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
周成风 2009-08-25
  • 打赏
  • 举报
回复
mfc 自帶的存在一些问题,比如没有重载 == 操作符,不是一个完整的对象。我们之前用mfc的也比较多,因为之前代码都是这么用的。

最近开始鼓励使用STL和Boost庫了。。
Saingel 2009-08-25
  • 打赏
  • 举报
回复
个人认为用MFC库最主要是通用性差,
一个函数/类可能用在MFC也可能用在api dll或服务,
虽然可以用些方法使非界面程序支持MFC,
有些系统需要MFC支持库,静态编译体积上又太大....
jameshooo 2009-08-25
  • 打赏
  • 举报
回复
如果对性能不敏感,建议还是使用MFC的集合类,因为它们跟其它MFC类一样,支持运行时类型信息检测(RTTI)和序列化。
bowfnfje 2009-08-25
  • 打赏
  • 举报
回复
建议楼主用STL,STL 容器,查询速度快好用!
pady_pady 2009-08-25
  • 打赏
  • 举报
回复
联系就是CArray 类似vector,CList类似list,CMap类似map.另外,MFC中支持更多专用类型的使用,如CXXXArray,CXXXList,把ob 和普通数据的分开,更能优化特定操作。
pady_pady 2009-08-25
  • 打赏
  • 举报
回复
MFC有CompareElement差不多和==一样。不要认为MFC的不好,所谓的== ,=等等操作符,是必须在你自己的类里面定义过的才能用的,如果你自己不定义这些操作符,它只能按默认的方式比较。个人认为,MFC下用MFC的好,其它情况用stl吧,如果效率要求好的,就自己写数据结构或者用window API里面有很多关于集合的函数吧
chm_8611 2009-08-25
  • 打赏
  • 举报
回复
个人觉得在MFC中还是使用MFC自带的
liudianshisan 2009-08-25
  • 打赏
  • 举报
回复
说得都很好,谢啦!结贴了
雪影 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 conry 的回复:]
引用 5 楼 ziplj 的回复:
没用过MFC自带的  一般用STL

没用过STL,一般用MFC自带的
[/Quote]

没用过STL,一般用MFC自带的
Saingel 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ziplj 的回复:]
没用过MFC自带的  一般用STL
[/Quote]
同,
写任何与界面没关系的东西时都不喜欢用mfc库~~~~
liuchaotao 2009-08-24
  • 打赏
  • 举报
回复
功能差不多,一般而言,在MFC中就使用MFC的集合类,其他情况下使用STL
zw0558 2009-08-24
  • 打赏
  • 举报
回复
学习
feilinhe 2009-08-24
  • 打赏
  • 举报
回复
是CTypedPtrList
feilinhe 2009-08-24
  • 打赏
  • 举报
回复
MFC中有CTypedListPtr,你少了个d,呵呵,MFC中的操作比STL稍微简单些,因为STL必须采用迭代器的方式访问
  • 打赏
  • 举报
回复
一直使用MFC的
  • 打赏
  • 举报
回复
关注一下!
Conry 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ziplj 的回复:]
没用过MFC自带的  一般用STL
[/Quote]
没用过STL,一般用MFC自带的
jyh_baoding 2009-08-24
  • 打赏
  • 举报
回复
有的是对象的,有的是数据的,有的可以互相替换
liudianshisan 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 tttyd 的回复:]
引用 7 楼 liudianshisan 的回复:
MFC下的CTypeListPtr可以支持“=”赋值操作符吗,或者相当于“=”也可以?

MFC下有CTypeListPtr吗?
没有这个的,你想说的是CPtrList吧?
他仅支持从CObject派生下的类对象指针.
而且需要强制转换.

CPtrArray支持"="操作符
[/Quote]

不好意思,应该是CTypedPtrList,写错了
雪影 2009-08-24
  • 打赏
  • 举报
回复
CPtrArray支持"="操作符
这种说法不准确!
应该是支持随机访问,即[]操作符
加载更多回复(9)

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧