我想创建一个带有int和我自己的自定义类的地图。有没有办法做到这一点?
map<int, MyClass> myMap;
如果没有,我该如何完成此操作?基本上,我想要一个id(或者最好是enum
)来指向我自己的自定义类。在大多数其他语言中,这将是一个简单的哈希。
答案 0 :(得分:10)
#include <map>
std::map<int, MyClass> myMap;
MyClass foo;
myMap[5] = foo;
myMap[5].bar = 10;
您确实需要MyClass
是默认和可复制的,因此可以创建它(如果您使用,例如myMap[5]
)并复制到地图中。
答案 1 :(得分:4)
是唯一的条件是:
所以你只需要确保你的对象是可复制的,这样就可以将它复制到地图中。
答案 2 :(得分:0)
你应该像这样使用
typedef std :: map myMapType;
myMapType myMap;
但是在插入课程时要小心,就像你为同一个键插入多次一样,你永远不会得到通知:
调用myMapType :: iterator itr myMap.find(key),具体取决于返回类型和您可以获得的程序要求。
同样明智的尝试使用[]运算符(如
)来访问任何元素 somefunc(myMap[10]);
因为即使插入密钥10
,也不会从地图中收到错误