C++ 地图的替代方案<;someKey,map<;另一个键,标识符>&燃气轮机;

C++ 地图的替代方案<;someKey,map<;另一个键,标识符>&燃气轮机;,c++,map,containers,C++,Map,Containers,我想为每对对象(指向对象的指针、该对象中的方法名称)分配一些数据,以便以后在知道指向对象的指针和方法名称的情况下有效地检索该数据 class object; class data; 哪个容器工作得更好: std::map<object*,std::map<std::string, data> > container; std::map容器; 或 std::map容器; 或者,我应该用别的东西吗?请注意,大多数对象只有一个方法,只有极少数对象有一个以上的方法 另外,

我想为每对对象(指向对象的指针、该对象中的方法名称)分配一些数据,以便以后在知道指向对象的指针和方法名称的情况下有效地检索该数据

class object;
class data;
哪个容器工作得更好:

std::map<object*,std::map<std::string, data> > container;
std::map容器;

std::map容器;
或者,我应该用别的东西吗?请注意,大多数对象只有一个方法,只有极少数对象有一个以上的方法


另外,“更好地工作”是指优化访问速度。

我认为更好的设计是将名称->数据关联放入对象中。因此,您可以直接向对象请求其支持的操作。这会更快,因为保存了一个地图搜索。

您提到您正在使用Qt,并且
对象实际上是
QObject
。Qt有一个可用于通过成员函数将数据附加到QObject的特定实例的选项。

它们不是等效选项。请将密钥配对。这样,每个节点插入只有一个分配,每个查找只有一个间接寻址。@Nawaz-为什么它们不相等?每个都允许每个对象*,std::string pair….@IlyaKobelevskiy:正好有一个数据,因为键是不同的。在第一种情况下,只有一个对象可以用作键,在第二种情况下,如果
std::string
不同,则同一个对象可以多次使用。@Nawaz是的,但最终归结为同一件事-每对(对象,字符串)可以使用一次-在第一个键中,每个对象将有一个键,该对象有多个字符串,在第二个-多对(对象,字符串)-因此问题,哪一个是最好的。。。仔细想想,在第一种情况下,每个对象都可以有许多与之关联的字符串……我无法控制对象本身(实际上,它是来自qt framework的QObject)@IlyaKobelevskiy,这实际上很重要。我发布了一个基于Qt的解决方案。
std::map<std::pair<object*,std::string>,data > container;