我应该将我的 Vector<> 声明为 Vector<>* 吗?

Should I declare my Vector<> as a Vector<>*?

本文关键字:lt gt Vector 声明 我应该 我的      更新时间:2023-10-16

假设我正在用stl

编写C 员工管理系统

我有一个名为 StaffMember的实体类:

class StaffMember
{
  //
}

和一个名为Staff的存储库:

class Staff
{
  private:
    std::vector<StaffMember> staffMembers;
}

我怎么知道是否应该将staffMembers声明为std::vector<StaffMember>std::vector<StaffMember>*

作为指针,我需要在~Staff()中删除它,否则我不会。

两者都可以工作,但是问题是,我选择哪一个,并且当这个问题将来弹出时,我可以使用一般规则吗?

通常按值(std::vector<StaffMember>),除非您需要共享。即使您确实需要共享它,智能指针也比原始指针好得多。

编译防火墙是一个例外(例如PIMPL)。

我会使用此:

// This means I have a vector (a list) of StaffMember pointers
std::vector<StaffMember *> myStaffMembers;
StaffMember *newStaffMember = new StaffMember();
myStaffMembers.push_back(newStaffMember);