MFC CMap.将cmap存储在cmap中

MFC CMap. Store a cmap inside a cmap

本文关键字:cmap 存储 MFC CMap      更新时间:2023-10-16

我想要一个CMap:

CMap<long,long, Cmap<long,long,long,long>>

因此,我的数据结构将有一个long作为键,它将重定向到一个值,该值将是其中long的cmap。

示例:如果我收到"1",那么它会将我发送到CMap
如果我收到2,它会给我发一个不同的cmap。

这可能吗?

不能使用std/stl映射。必须在此项目中使用MFC CMap对象。

谢谢。

根据这个答案,CMap没有复制构造函数,这就是为什么不能在另一个中包含一个。但是,您应该仍然能够存储指向CMap指针

我不认为您在CMap中存储的内容有任何限制,所以您可以这样做,但
我强烈建议您使用标准库容器。它们之所以成为标准是有原因的。这使它们更易于维护,并使代码更容易被未来的开发人员阅读。MS还将用新的编译器进行带外C++编译器更新,这样你将来只需重新编译就可以获得额外的改进。

std::map<long, std::map<long, long> > myMapOfMaps;

编辑:
我检查了CMap的标题,@DaveReger是正确的,没有复制构造函数,所以你唯一的选择是将CMap设置为long-to-CMap*OR以使用std::map。我强烈推荐标准地图。

第2版:
根据您关于不允许在项目中使用标准库的声明,您将不得不使用longCMap*的映射。我建议你和建筑师谈谈,看看他们为什么不希望你使用标准的图书馆藏品。一旦您了解了标准集合的设计,它们就会使代码更加清晰易读。

感谢您的回答。

存储指向CMap的指针的解决方案有效,但风险太大。

我们使用的另一个解决方案是制作一个包含CMap的对象映射。该类将包含标识符和内部的cmap。含义:

CMap LiveDisconnectionCache;

再次感谢