Question: QUESTION 3 Graph Data Structure cpp #include #include #include #include #include #include class ClubHub { private: std::unordered _ map > studentClubs; std::unordered _ map >

QUESTION 3
Graph Data Structure
cpp
#include
#include
#include
#include
#include
#include
class ClubHub {
private:
std::unordered_map> studentClubs;
std::unordered_map> clubMembers;
public:
void addStudent(const std::string& studentID){
studentClubs[studentID]= std::unordered_set();
}
void createClub(const std::string& clubName){
clubMembers[clubName]= std::unordered_set();
}
void addStudentToClub(const std::string& studentID, const std::string& clubName){
studentClubs[studentID].insert(clubName);
clubMembers[clubName].insert(studentID);
}
void removeStudentFromClub(const std::string& studentID, const std::string& clubName){
studentClubs[studentID].erase(clubName);
clubMembers[clubName].erase(studentID);
}
std::vector findClubsByStudent(const std::string& studentID) const {
std::vector clubs(studentClubs.at(studentID).begin(), studentClubs.at(studentID).end());
return clubs;
}
std::vector findStudentsByClub(const std::string& clubName) const {
std::vector students(clubMembers.at(clubName).begin(), clubMembers.at(clubName).end());
return students;
}
std::vector sortStudentsAlphabetically() const {
std::vector students;
for (const auto& pair : studentClubs){
students.push_back(pair.first);
}
std::sort(students.begin(), students.end());
return students;
}
void saveToFile(const std::string& filename) const {
std::ofstream file(filename);
for (const auto& pair : studentClubs){
file << pair.first <<":";
for (const auto& club : pair.second){
file << club <<",";
}
file <<"
";
}
file.close();
}
void loadFromFile(const std::string& filename){
std::ifstream file(filename);
std::string line;
while (std::getline(file, line)){
size_t pos = line.find(":");
std::string studentID = line.substr(0, pos);
std::string clubs = line.substr(pos +1);
std::vector clubList;
size_t start =0, end;
while ((end = clubs.find(",", start))!= std::string::npos){
clubList.push_back(clubs.substr(start, end - start));
start = end +1;
}
studentClubs[studentID]= std::unordered_set(clubList.begin(), clubList.end());
for (const auto& club : clubList){
clubMembers[club].insert(studentID);
}
}
file.close();
}
};

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!