C++ 创建变体CMap的正确方法

C++ 创建变体CMap的正确方法,c++,dictionary,com,mfc,variant,C++,Dictionary,Com,Mfc,Variant,我需要使用类创建一个字典集合。我的字典定义如下: CMap<CString, LPCTSTR, CComVariant, CComVariant> map; CMap图; 然后,我添加如下元素: void setKeyValue(CMap<CString, LPCTSTR, CComVariant, CComVariant>& map, CString& strKey, VARIANT& varValue) { map.SetAt(st

我需要使用类创建一个字典集合。我的字典定义如下:

CMap<CString, LPCTSTR, CComVariant, CComVariant> map;
CMap图;
然后,我添加如下元素:

void setKeyValue(CMap<CString, LPCTSTR, CComVariant, CComVariant>& map, CString& strKey, VARIANT& varValue)
{
    map.SetAt(strKey, varValue);
}
void setKeyValue(CMap&map、CString&strKey、VARIANT&varValue)
{
map.SetAt(strKey,varValue);
}

有人能检查一下这是否是用变体填充CMap的正确方法吗?我已经有一段时间没有做COM了,所以我想确保我没有造成任何内存泄漏。谢谢

这将起作用并且是正确的

重要的是使用支持正确复制和销毁变体的CComVariant或_variant类型


但是为什么不使用std::mapIdk呢。我在MFC的“世界”,所以我去了CMap。我可以问一个后续问题吗?比方说,如果我这样声明映射:
CMap
它仍然可以编译,但是有什么区别呢?事实上没有区别。但是我对std::map类和特性感到更舒服。即使在MFC世界中,使用STL世界也从来没有问题。从未!STL在MFC应用程序中看起来并不合适,因此使用MFC集合可能是最好的方法。