我有自己的对象
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
}
}
如何在两张 map 中完成比较工作?
或者我应该使用不同的数据结构?
更新:
感谢您的回复。
为什么我使用两个 map 是因为两个不同的函数会生成 map :
function1() //returns map1;
function2() //returns map2;
两个映射中使用的键是 my_object 的
name
字段。对于“足够快的引用”,我认为如果 map1 有 n 个元素,map2 有 m 个元素,那么我的计算时间是 n*m 吗? 最佳答案
你可以
for (const auto& m1 : map1) {
auto i2 = map2.find(m1.first);
if (i2 != map2.end() && m1.second.vendor == i2->second.vendor) {
// do some work
}
}
关于C++ 检查一个对象是否存在于两个映射中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36734832/