school/cs142/smcquay/lab08/people.cc

66 lines
1.4 KiB
C++

#include "people.h"
people::~people() {
for(auto i: persons) {
delete i;
}
}
bool people::contains(string name) {
for(auto i: persons) {
if(i->name == name) {
return true;
}
}
return false;
}
void people::add_person(string name, string food) {
if(not contains(name)) {
person * tmp = new person(name, food);
persons.push_back(tmp);
}
}
void people::connect(unsigned int a, unsigned int b) {
cout << *this << endl;
person * p1 = persons[a];
person * p2 = persons[b];
p1->friends.insert(p2);
p2->friends.insert(p1);
}
void people::unfriend(unsigned int a, unsigned int b) {
cout << *this << endl;
person * p1 = persons[a];
person * p2 = persons[b];
auto p2it = p1->friends.find(p2);
if(p2it != p1->friends.end())
p1->friends.erase(p2it);
auto p1it = p2->friends.find(p1);
if(p1it != p2->friends.end())
p2->friends.erase(p1it);
}
void people::food_update(unsigned int a, string new_food) {
persons[a]->update_food(new_food);
}
unsigned int people::size() {
return persons.size();
}
person * people::operator[](unsigned int i) {
return persons[i];
}
ostream & operator<<(ostream & os, people & p) {
os << "people (" << p.persons.size() << "):" << endl;
for(unsigned int i=0; i < p.persons.size(); i++) {
os << i << " : " << *p.persons[i] << endl;
}
return os;
}