Verifique se o mapa em C ++ contém todas as chaves de outro mapa

Estou planejando usar dois mapas em C ++, do tipo:std::map<char, Node>, OndeNode é uma classe personalizada. Suponha que eu tenha dois mapasm1 em2 do tipo acima, eu quero descobrir sem1 contémtodos chaves presentes emm2. Em outras palavras, quero verificar se a intersecção do conjunto de chaves dom1 em2 é o mesmo que o conjunto de chaves dem2.

Eu poderia iterar sobre todas as chavesm2 e fazer umfind() oucount() emm1, mas isso parece um desperdício e provavelmente seria lento. Digo isso porque as chaves são armazenadas como uma árvore de pesquisa binária em ordem de classificação em umstd::map, e assim cada um dos find / count terá O (logn), e para a próxima chave emm2, o mesmo caminho nas chaves dem1 terá que ser percorrido desde o começo.

Eu sou novo no STL, então, por favor, perdoe minha ignorância sobre o que parece ser algo que deveria ser feito facilmente. Além disso, alguns trechos de código de exemplo simples ou links para trechos de código serão muito úteis para entender melhor. Não consigo usar bibliotecas não padrão, incluindo boost.

Desde já, obrigado!

questionAnswers(1)

yourAnswerToTheQuestion