检查C++中的映射是否包含其他映射中的所有键
Check if map in C++ contains all the keys from another map
我计划在C++中使用两个类型为std::map<char, Node>
的映射,其中Node
是一个自定义类。假设我有两个映射,上面类型的m1
和m2
,我想知道m1
是否包含m2
中存在的所有密钥。换句话说,我想验证m1
和m2
的密钥集的交集与m2
的密钥集相同。
我可以迭代m2
中的所有键,并在m1
上执行find()
或count()
,但这似乎是一种浪费,可能会很慢。我这么说是因为密钥在std::map
中按排序顺序存储为二进制搜索树,因此每个find/count将取O(logn),对于m2
中的下一个密钥,必须从一开始遍历m1
的密钥中的相同路径。
我是STL的新手,所以请原谅我对什么应该很容易做到的事情的无知。此外,一些简单的示例代码片段或代码片段链接将非常有助于更好地理解。我不能使用非标准库,包括boost。
提前感谢!
由于map
的键是排序的,因此您可以同时遍历这两个键,并将键相互比较。如果key(m1) < key(m2)
,则递增m1的迭代器;如果CCD_ 19,则m2包含不在m1中的密钥。
这就是O(n)。
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 用于对项目进行分组并将单个项目映射到其他组成员的数据结构
- 擦除映射 c++ 中其他键的值中已存在的那些值
- 在类中使用映射并通过其他类的 get() 和 set() 函数访问值
- 未签名的char数组到stl ::映射或其他容器中的键
- C++11 在列表到映射(或其他容器)之间移动元素
- 模板功能以映射特定类型,并保留所有其他不变的
- 带有映射参数的函数需要其他参数
- 检查C++中的映射是否包含其他映射中的所有键
- 有效地遍历映射,同时插入其他线程
- 如何命名同时充当其他集合容器的B+树键/值映射集合
- 在C++中将类类型映射到其他类类型
- 将迭代器取消引用到映射或 C++ 中的某些其他复合类型的类型是什么
- 哪个容器是管理映射到其他一些小对象的小对象的合适容器
- 当一个线程锁定一个大映射时,如何避免冻结其他线程
- 如果在映射中没有找到键,则返回其他值
- 将整数值映射到其他整数值
- 访问与其他函数映射的文件
- 使用哪个容器映射或设置或其他
- 迭代映射并调用删除其他元素的函数就是映射