关于CMap类的一个问题

xysome 2004-03-20 10:58:29
CMap类的声明如下:
template< class KEY, class ARG_KEY, class VALUE, class ARG_VALUE >class CMap : public CObject
请问KEY与ARG_KEY,VALUE与ARG_VALUE之间有什么关系呢?
我看到一个类的定义如下:
typedef CMap<int,int,MyClass*,MyClass*&> CMyMap;
这里面各个参数又都是什么意义呢?最后一个*&连一起是什么意思?
我可不可以如下方式定义:
typedef CMap<int,MyClass1,MyClass2*,MyClass3*&> CMyMap;
请高手赐教,谢谢!
...全文
86 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
蒋晟 2004-03-20
  • 打赏
  • 举报
回复
ARG*用于参数的传递,而Key和Value通常用于返回值。
例如CString的Key和Value,Arg可以是LPCTSTR或者CString&
szclm 2004-03-20
  • 打赏
  • 举报
回复
Mark
bluebohe 2004-03-20
  • 打赏
  • 举报
回复
CList<int,int&>和CList<int int>有什么区别?

"加&主要是为了提高以大型对象为参数时的效率"
对一个大型对象,如果以传值方式传递参数,则整个对象要被复制一份,有可能花很多时间,因此CList让它接受的参数类型也可以定制,这就解决了上面的问题


二者在行为表现上没有任何区别,有区别的仅仅是参数的使用而已

bluebohe 2004-03-20
  • 打赏
  • 举报
回复
请问KEY与ARG_KEY,VALUE与ARG_VALUE之间有什么关系呢?
仅仅是传入参数的区别,比如是传入值还是传入对象的引用,这在Map的调用方式和运行效率上会有小的区别


*&连一起表示一个指针的引用

16,466

社区成员

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

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

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