Interseção de dois mapas
Escreva uma função que receba dois mapas diferentes. Em cada um, mantenha apenas as chaves que existem nos dois mapas de entrada, preservando os valores originais daquele mapa. Retorne os dois mapas filtrados na mesma ordem dos argumentos.
Exemplos
intersection(std::map<std::string, int>{{"a", 5}, {"b", 13}, {"c", 7}}, std::map<std::string, int>{{"b", 5}, {"c", 8}, {"d", 91}, {"e", 99}}); // std::vector<std::map<std::string, int>>{{{"b", 13}, {"c", 7}}, {{"b", 5}, {"c", 8}}}
intersection(std::map<std::string, int>{{"a", 5}, {"b", 13}, {"c", 7}}, std::map<std::string, int>{{"c", 9}, {"d", 8}}); // std::vector<std::map<std::string, int>>{{{"c", 7}}, {{"c", 9}}}
intersection(std::map<std::string, int>{{"a", 1}, {"b", 34}}, std::map<std::string, int>{{"c", 9}, {"d", 8}}); // std::vector<std::map<std::string, int>>{{}, {}}Notas
Se não houver chaves em comum, retorne dois mapas vazios.