gpt4 book ai didi

c++ - 实现 Employee 类的更好选择是什么?

转载 作者:行者123 更新时间:2023-11-28 06:35:40 25 4
gpt4 key购买 nike

如何找到给定员工的 StaffsManager?这是我的类定义:

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 vector 。有什么更好的方法来实现这个?对于每个员工,将有一个 Manager。所以对老板/经理使用 vector 不是一个好的选择,对吧?

最佳答案

尽管此处的代码无法编译,因为您试图在其自身内部使用一个类,但这里的问题实际上似乎是一个设计缺陷,而不是其他任何问题(您可以通过使用指针来解决眼前的问题相反,但我建议您先重新考虑您的设计)。不同员工之间的关系不是员工的属性,所以我会犹豫将其存储为类(class)成员。如果出于某种原因我确实采用了此处的设计并将员工之间的关系存储在员工类中,那么我不会按值(value)存储员工对象的拷贝。按值存储拷贝会导致保持数据同步和一致的问题(更不用说如果员工之间存在大量关系,空间利用率会很差)。最好使用指向员工对象的智能指针之类的东西。

或者您可以更改您的设计。如果每个员工都可以有一个唯一的 ID,那么将关系存储在员工类之外可能会更好。您可以使用一些数据结构来执行此操作,本质上您有一些图表显示节点是员工而边缘是关系的关系。您可以在那里使用智能指针或存储代表员工的唯一键。

关于c++ - 实现 Employee 类的更好选择是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26823593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com