【发布时间】:2016-04-20 05:47:27
【问题描述】:
我有自己的对象
class my_object
{
int id;
bool state;
string name;
string vendor;
}
我想将我的对象存储到两个map 中以便足够快的参考。
std::map<string, my_object> map1;
std::map<string, my_object> map2;
最后,我想检查两个映射中是否存在我的对象的某些键:
for(each my_object m1 in map1 and my_object m2 in map2 have the same key)
//for example, key "Bob" have corresponding objects in map1 and map2
{
if(m1.vendor == m2.vendor)
{
//do some work
}
}
如何在两张地图中进行比较? 还是应该使用不同的数据结构?
更新: 感谢您的回复。 为什么我使用两个地图是因为两个不同的功能会产生地图:
function1() //returns map1;
function2() //returns map2;
两个映射中使用的键是 my_object 的 name 字段。对于“足够快的参考”,我认为如果map1有n个元素,map2有m个元素,我的计算时间是n*m吗?
【问题讨论】:
-
两张map中的两个key是什么?一张地图是否由
name键入,另一张由vendor键入? -
必须有一个解决方案,但它会非常有效。如果你告诉我们你想做什么,它可能会有所帮助。
-
如果同一个键在两个映射中是否保证相同的对象?
-
@M.M 似乎不在 OP 案例中。我在逻辑上没有找到。
-
虽然不是对这个问题的直接回答,但首先分析为什么你有两张地图可能会更好 - “为了足够快的参考”还有一些不足之处。事实证明,您实际上并不需要它,或者不同的容器效果更好。
标签: c++ dictionary