【发布时间】:2012-09-28 07:24:11
【问题描述】:
我打算在 C++ 中使用两个映射,类型为:std::map<char, Node>,其中Node 是一个自定义类。假设我有两个映射,m1 和 m2 以上类型,我想知道m1 是否包含m2 中存在的所有 键。也就是说,我要验证m1和m2的key集合的交集与m2的key集合是否相同。
我可以遍历m2 中的所有键并在m1 上执行find() 或count(),但这似乎是一种浪费并且可能会很慢。我这样说是因为键在std::map 中按排序顺序存储为二叉搜索树,因此每个查找/计数都将占用 O(logn),对于m2 中的下一个键,相同的路径m1 的键必须从头开始遍历。
我是 STL 的新手,所以请原谅我对似乎应该很容易做到的事情的无知。此外,一些简单的示例代码 sn-ps 或代码 sn-ps 的链接将非常有助于更好地理解。我不能使用非标准库,包括 boost。
提前致谢!
【问题讨论】:
标签: c++ stl map set intersection