如何找到给定员工的Staffs
和Manager
?这是我的班级定义:
class Employee
{
private:
int id;
string name;
vector<Employee> boss;
vector<Employee> staffs;
public:
void addStaff(Employee e)
{
staffs.push_back(e);
}
void setBoss(Employee e)
{
boss.push_back(e);
}
Employee getManager()
{
vector<Employee>::iterator itr;
itr = boss.begin();
return (*itr);
}
};
为了找到员工,我正在遍历staffs
向量。有什么更好的方法来实现这个?对于每位员工,将有一个Manager
。所以使用vector
作为老板/经理不是一个好选择,对吗?
答案 0 :(得分:1)
即使这里的代码无法编译,因为你试图在自己内部使用一个类,这里的问题似乎确实是一个设计缺陷而不是其他任何东西(你可能能够通过使用指针解决当前的问题相反,但我建议你先重新考虑你的设计)。 各种员工之间的关系不是员工的属性,所以我会毫不犹豫地将其存储为班级成员。如果我出于某种原因,请使用您在此处的设计并存储员工类中员工之间的关系,那么我就不会按值存储员工对象的副本。按值存储副本会导致数据保持同步和一致的问题(如果员工之间存在大量关系,则更不用说空间利用率很低)。最好使用类似于员工对象的智能指针。
或者你可以改变你的设计。如果每个员工都拥有唯一的ID,那么您可以更好地将关系存储在员工类之外。您可以使用一些数据结构来实现这一点,基本上您有一些图表显示节点是员工的关系,边缘是关系。您可以在那里使用智能指针,也可以存储代表员工的唯一键。