C++检查一个对象是否存在于两个映射中

标签 c++ dictionary

我有自己的对象

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/

相关文章:

c++ - 当参数由基类指针传递时检查子类型

c++ - 如何通过 PostMessage 发送字符串?

c++ - 使用 ffi 将 C++ 数据类型导入 haskell

python - 创建仅包含最大公共(public)组配对的字典

c++ - 从另一个线程中断 event_base_dispatch

c++ - cpp 将 int 分配给字符串恶作剧

scala - 为什么 Map withDefaultValue 返回 Option = None

python - 如何获取字典中特定键最大的字典?

python - 拆分,将数据映射到 Pandas 数据框中的两列中

python - 使用正则表达式将数据转换为 Python 中的字典