Intersección de dos mapas
Escribe una función que reciba dos mapas diferentes. En cada uno, conserva únicamente las claves que existan en ambos mapas de entrada y mantén los valores originales de ese mapa. Devuelve los dos mapas filtrados en el mismo orden que los argumentos.
Ejemplos
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
Si no hay claves en común, devuelve dos mapas vacíos.