Listing 2: Example of using OneMany class
#include "Relations.h" #include <string> using namespace std; //function prototypes void listChildren(const OneMany<string, string>& MotherChildren, const string& Mother); void insertChild(OneMany<string, string>& MotherChildren, const string& Mother, const string& Child); void main(){ // declare the relationship // each mother might have many children but each child indeed // has only one mother OneMany<string, string> MotherChildren; string firstMother("Jane"); string secondMother("Ann"); string child; child = "Paul"; insertChild(MotherChildren, firstMother, child); child = "Paul"; // will fail because Paul is already in the relationship insertChild(MotherChildren, firstMother, child); child = "Richard"; insertChild(MotherChildren, firstMother, child); child = "Ann"; insertChild(MotherChildren, firstMother, child); child = "Alex"; insertChild(MotherChildren, firstMother, child); ///////////////////////////////////////////// child = "Cathy"; insertChild(MotherChildren, secondMother, child); //will fail because Richard is Jane's son child = "Richard"; insertChild(MotherChildren, secondMother, child); child = "Peter"; insertChild(MotherChildren, secondMother, child); child = "Mary"; insertChild(MotherChildren, secondMother, child); cout << "Listing Jane's children:" << endl; listChildren(MotherChildren, firstMother); cout << endl; cout << "Listing Ann's children:" << endl; listChildren(MotherChildren, secondMother); cout << endl; string* pMother = MotherChildren.getOne("Ann"); if(NULL != pMother) cout << "Ann's mother is " << *pMother << endl; } void listChildren(const OneMany<string, string>& MotherChildren, const string& Mother){ //Iterate through all children for(OneMany<string, string>::const_iterator it = MotherChildren.begin(Mother), end = MotherChildren.end(Mother); it != end; ++it) cout << *it << endl; } void insertChild(OneMany<string, string>& MotherChildren, const string& Mother, const string& Child){ if(!MotherChildren.insert(Mother, Child)) cout << ">>>Can't insert " << Child << " into relationship " << Mother << "-" << Child << endl; } /* Output: >>>Can't insert Paul into relationship Jane-Paul >>>Can't insert Richard into relationship Ann-Richard Listing Jane's children: Paul Richard Ann Alex Listing Ann's children: Cathy Peter Mary Ann's mother is Jane */ End of Listing