如何拥有无序的\u多重映射的无序\u多重映射 我通过无序的MultuMac进行练习,遇到一个无序的多聚体包含另一个无序多进制的问题。编译器抛出一个错误,称C++标准不提供这种类型的哈希。我想我必须编写一个哈希函数,但是我的理解是有限的,因为我对STL是新的。< / P>

如何拥有无序的\u多重映射的无序\u多重映射 我通过无序的MultuMac进行练习,遇到一个无序的多聚体包含另一个无序多进制的问题。编译器抛出一个错误,称C++标准不提供这种类型的哈希。我想我必须编写一个哈希函数,但是我的理解是有限的,因为我对STL是新的。< / P>,c++,stl,unordered-multimap,C++,Stl,Unordered Multimap,我已经尝试过向无序的_多重映射插入一个结构或另一个多重映射,但到目前为止没有成功 std::unordered_multimap<long,long>m_Map1; std::unordered_multimap<CString,m_Map1>m_Map2; //This line throws error //inserting to the map m_Map1.insert(std::pair<long,long>(10,20)); m_Map2

我已经尝试过向无序的_多重映射插入一个结构或另一个多重映射,但到目前为止没有成功

std::unordered_multimap<long,long>m_Map1;
std::unordered_multimap<CString,m_Map1>m_Map2;    //This line throws 
error
//inserting to the map
m_Map1.insert(std::pair<long,long>(10,20));
m_Map2.insert(_T("ABC"),m_Map1);
//also the compiler does not let me create an object for this map
m_Map1 m_ObjMap;    //error here as well
std::无序的多映射;
std::无序的_multimapm _Map2//这条线抛出
错误
//插入到地图中
m_Map1.插入(标准::对(10,20));
m_地图2.插入(_T(“ABC”),m_地图1);
//此外,编译器不允许我为此映射创建对象
m_Map1 m_ObjMap//这里也有错误

我应该如何实现这一点。我在这里试图实现的是一个人的名字与出生日期和死亡日期的关联。我希望在一个地图中有日期,并将其与名字映射到m_地图2。

您的问题是,
std::hash
没有专门的
CString

将问题归结为最简单的部分,这也不会编译:

std::unordered_multimap<CString , int> m_Map2;    

您的问题是,
CString

将问题归结为最简单的部分,这也不会编译:

std::unordered_multimap<CString , int> m_Map2;    

m_-Map1
不是一个类型,而是
std::unordered_-multimap
的一个实例。如果您遇到编译器错误。您可能想要的是
std::无序的\u multimapm\u Map2
在第二个多重映射的声明中,您必须编写类似于
std::unordered\u multimapm\u Map2
的内容,而不是在模板中写入第一个多重映射的名称。此外,最后一行也是错误的,
m\u Map1
已经是一个对象,因此您无法创建新对象。我认为你把这里的类型和对象搞乱了。你是对的。C++标准不定义非标准<代码> cShord类型的散列。尝试使用标准的
std::string
,忘记所有只存在于Microsoftverse中的非标准类;std::无序多图m\U图2
m_-Map1
不是一个类型,而是
std::unordered_-multimap
的一个实例。如果遇到编译器错误,则返回。您可能想要的是
std::无序的\u multimapm\u Map2
在第二个多重映射的声明中,您必须编写类似于
std::unordered\u multimapm\u Map2
的内容,而不是在模板中写入第一个多重映射的名称。此外,最后一行也是错误的,
m\u Map1
已经是一个对象,因此您无法创建新对象。我认为你把这里的类型和对象搞乱了。你是对的。C++标准不定义非标准<代码> cShord类型的散列。尝试使用标准的
std::string
,忘记所有只存在于Microsoftverse中的非标准类;std::无序多图m\U图2@RichardHodges..非常感谢,但我恐怕不能在我的位置上使用boost。但是你的回答让我更好地理解了这个问题。@Somil很棒。按计划工作。@RichardHodges.非常感谢,但我恐怕不能在我的位置使用boost。但是你的回答让我更好地理解了这个问题。@Somil很棒。按计划工作。