///////////////////////////////////////////////////// // MT3Q6 - Dependency Table // // // // Jim Fawcett, CSE687 - OOD Midterm, Spring 2013 // ///////////////////////////////////////////////////// #include #include #include #include #include "../MTutility/MTutility.h" typedef std::string FileName; typedef std::list DepList; typedef std::unordered_map Dependencies; class FileDependencies { public: void Add(const FileName& src, const FileName& dst); void Show(std::ostream& out); private: Dependencies deps; }; void FileDependencies::Add(const FileName& src, const FileName& dst) { Dependencies::iterator iter = deps.find(src); if(iter == deps.end()) { DepList newDeps; newDeps.push_back(dst); deps[src] = newDeps; } else { iter->second.push_back(dst); } } void FileDependencies::Show(std::ostream& out) { for(auto pair : deps) { std::cout << "\n " << pair.first << "\n "; for(auto file : pair.second) std::cout << file << " "; std::cout << std::endl; } } int main() { Title("MT3Q6 - File Dependencies"); FileDependencies fd; fd.Add("A", "B"); fd.Add("A", "C"); fd.Add("A", "D"); fd.Add("C", "E"); fd.Add("C", "A"); fd.Add("C", "F"); fd.Add("D", "E"); fd.Add("D", "F"); fd.Show(std::cout); std::cout << "\n\n"; return 0; }