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!